程序人生

C++与C#,java,php,安卓开发,行业软件,软件测试
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、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的目录\tools\build\src\engine,执行build gcc,在当前目录将会生成bin.ntx86文件夹,里面包含两个exe文件b2.exe,bjam.exe

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

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

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

    b2 --toolset=gcc address-model=32 -sZLIB_SOURCE="D:\MinGW\msys\1.0\home\zlib-1.2.11" -sZLIB_INCLUDE="D:\MinGW\msys\1.0\home\zlib-1.2.11"  --build-type=complete --prefix=D:\boost_1_59_0\lib32 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:\MinGW\msys\1.0\msys.bat的第一行,如:rem call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat",目的是让gcc编译,而不是msvc编译

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

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

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

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

三、libircclient库

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

    1、用rem注释D:\MinGW\msys\1.0\msys.bat的第一行,如:rem call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat",目的是让gcc编译,而不是msvc编译

    2、复制源码到msys\1.0\home下如msys\1.0\home\libircclient。

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

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

    5、如果顺利,make install 后,可以在msys\1.0\local找到编译成功的.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
}