• windows环境下mingw qt编译一些常见C++库(boost、zlib、libircclient)


    一、boost库

    1、下载boost源码并解压,比如:https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.zip

    2、打开QT命令行工具,必须关键,如:Qt 5.8 for Desktop (MinGW 5.3.0 32 bit)

    3、在命令行进入boost的目录 oolsuildsrcengine,执行build gcc,在当前目录将会生成bin.ntx86文件夹,里面包含两个exe文件b2.exe,bjam.exe

    4、把该b2.exe,bjam.exe拷贝到boost根目录,比如:D:oost_1_72_0

    5、在命令行中改变目录到boost根目录,比如:D:oost_1_72_0,运行:b2 --toolset=gcc address-model=32 --prefix=D:oost_1_72_0mingwlib32 install,然后就会在D:oost_1_72_0mingwlib32下生成头文件和库文件。

    6、加zlib库(默认在windows 下是没有 zlib 支持,而且boost iostreams 中使用了zlib ,所以需要下载 zlib 的源码,增加对 zlib 的支持),需要添加-sZLIB_SOURCE和-sZLIB_INCLUDE,如下:

        b2 --toolset=gcc address-model=32 -sZLIB_SOURCE="D:MinGWmsys1.0homezlib-1.2.11" -sZLIB_INCLUDE="D:MinGWmsys1.0homezlib-1.2.11"  --build-type=complete --prefix=D:oost_1_59_0lib32 install

    二、zlib

    1、下载zlib源码并解压,比如:https://www.zlib.net/zlib-1.2.11.tar.gz

    2、有两种方法

       a方法:

         a-1、打开QT命令行工具,如:Qt 5.8 for Desktop (MinGW 5.3.0 32 bit).

         a-2、复制该win32下makefile.gcc到根目录,在QT命令行进入zlib的目录

         a-3、执行mingw32-make -f makefile.gcc

         a-4、手工拷贝头文件和库文件( make  install不行)

      b方法(系统必须安装了mingw,比如:D:MinGW):

        b-1、用rem注释D:MinGWmsys1.0msys.bat的第一行,如:rem call "D:Program FilesMicrosoft Visual Studio 10.0VCinvcvars32.bat",目的是让gcc编译,而不是msvc编译

        b-2、复制源码到msys1.0home下如msys1.0homezlib-1.2.11,复制该win32下makefile.gcc到根目录,并去掉.gcc文件后缀

        b-3、执行D:MinGWmsys1.0msys.bat,打开msys命令行工具,输入pwd显示当前目录

        b-4、在msys命令行中进入zlib目录,make 

        b-5、如果顺利,make install 后,可以在msys1.0local找到编译成功的.a文件

    三、libircclient库

    系统必须安装了mingw,比如:D:MinGW):

        1、用rem注释D:MinGWmsys1.0msys.bat的第一行,如:rem call "D:Program FilesMicrosoft Visual Studio 10.0VCinvcvars32.bat",目的是让gcc编译,而不是msvc编译

        2、复制源码到msys1.0home下如msys1.0homelibircclient。

        3、执行D:MinGWmsys1.0msys.bat,打开msys命令行工具,输入pwd显示当前目录

        4、在msys命令行中进入libircclient目录,./configure ,在在其下src目录回生成一个makefile文件,进入src目录,执行 make ,如果顺利,可以在libircclientsrc找到编译成功的.a文件

        5、如果顺利,make install 后,可以在msys1.0local找到编译成功的.a文件(需要修改makefile,缺省的Makefile会生成静态库)

    注意:如果编译链接过程中出现undefined reference to `ioctlsocket@12'类似错误,则打开Makefile文件在LIBS =中添加-lwsock32 -lws2_32 

        我在使用的过程中发现编译出来的libircclient.a文件在qt项目中使用会有重复定义的错误导致链接不成功。后来在qt中建立项目来编译,pro文件如下:

    QT       -= gui
    TARGET = ircclient
    TEMPLATE = lib
    CONFIG += staticlib
    DEFINES += QT_DEPRECATED_WARNINGS
    INCLUDEPATH += ../src/libircclient/include
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    SOURCES += 
        ../src/libircclient/src/colors.c 
        ../src/libircclient/src/dcc.c 
        ../src/libircclient/src/errors.c 
        ../src/libircclient/src/libircclient.c 
        ../src/libircclient/src/portable.c 
        ../src/libircclient/src/sockets.c 
        ../src/libircclient/src/ssl.c 
        ../src/libircclient/src/utils.c
    HEADERS += 
        ../src/libircclient/include/libirc_errors.h 
        ../src/libircclient/include/libirc_events.h 
        ../src/libircclient/include/libirc_options.h 
        ../src/libircclient/include/libirc_rfcnumeric.h 
        ../src/libircclient/include/libircclient.h 
        ../src/libircclient/src/config.h 
        ../src/libircclient/src/dcc.h 
        ../src/libircclient/src/params.h 
        ../src/libircclient/src/session.h
    unix {
        target.path = /usr/lib
        INSTALLS += target
    }
  • 相关阅读:
    [转]Putty中文乱码解决方法
    linux内核编译
    grub2的使用
    linux的简单网络配置
    [转]建立swap分区
    [转]ps/2键盘线序识别方法
    Linux下备份系统至另一硬盘
    [转]Vimium快捷键
    [转] C中的位域
    [转]diskpart命令
  • 原文地址:https://www.cnblogs.com/legahero/p/windows_mingwQt_lib.html
Copyright © 2020-2023  润新知