zoukankan      html  css  js  c++  java
  • 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
    }
  • 相关阅读:
    Delphi XE5 android 蓝牙通讯传输
    Delphi XE5 android toast
    Delphi XE5 android openurl(转)
    Delphi XE5 如何设计并使用FireMonkeyStyle(转)
    Delphi XE5 android 捕获几个事件
    Delphi XE5 android listview
    Delphi XE5 android 黑屏的临时解决办法
    Delphi XE5 android popumenu
    Delphi XE5 android 获取网络状态
    Delphi XE5 android 获取电池电量
  • 原文地址:https://www.cnblogs.com/legahero/p/windows_mingwQt_lib.html
Copyright © 2011-2022 走看看