• MSVC编译Boost的几种链接方式


    折腾了好几个小时,终于理清了Boost链接的组合方式,记录一下。

    A1、动态链接Boost的动态库
    A2、静态链接Boost的动态库

    B1、动态链接VC运行库
    B2、静态链接VC运行库

    那么这样就有2x2=4种方式链接Boost。但是一般使用Boost的码农们都不会用动态链接的方式吧,因为Boost的头文件默认都是静态链接的
    而且动态链接还要附带Boost的DLL文件,另一方面,我们可能并不想让别人知道我们用了Boost。基于这些原因,本文只考虑静态链接Boost库的方式

    再说说MSVC,一个项目有Debug和Release模式,还可以设置是动态链接VC库还是静态链接VC库

    1、动态链接VC的Boostlib + 动态链接VC库(MD) + Debug
    2、动态链接VC的Boostlib + 动态链接VC库(MD) + Release
    3、动态链接VC的Boostlib + 静态链接VC库(MT) + Debug
    4、动态链接VC的Boostlib + 静态链接VC库(MT) + Release
    5、静态链接VC的Boostlib + 动态链接VC库(MD) + Debug
    6、静态链接VC的Boostlib + 动态链接VC库(MD) + Release
    7、静态链接VC的Boostlib + 静态链接VC库(MT) + Debug
    8、静态链接VC的Boostlib + 静态链接VC库(MT) + Release

    也就是说,为了编译一个比较通用的,能够适应项目的各种设置的Boost库,每个Boost的模块需要编译8个不同的lib文件。
    编译参数中不特别指定variant的话,就是把Debug和Release都编译了,所以我们只需要编译2次就可以获得每个lib的8种不同的文件。

    bjam.exe --build-dir=E:/Boost/Boost_1.55.0_VC2013_X64/temp --stagedir=E:/Boost/Boost_1.55.0_VC2013_X64 link=static runtime-link=static address-model=64
    bjam.exe --build-dir=E:/Boost/Boost_1.55.0_VC2013_X64/temp --stagedir=E:/Boost/Boost_1.55.0_VC2013_X64 link=static runtime-link=shared address-model=64

    --build-dir是临时文件路径。--stagedir是动态库输出目录。address-model=64指定使用x64架构。如果要编译x86的话把address-model去掉就行了。

    http://blog.csdn.net/aqtata/article/details/29583259

  • 相关阅读:
    SFML开发环境部署
    Java使用selenium爬取加密网页
    MySQL配置参数log_queries_not_using_indexes
    解决Perl脚本无法识别当前目录下的其他脚本
    使用ssh公钥远程登录
    虚拟机CeontOs的网络配置
    【OpenCV】解决树莓派读取4个USB摄像头数据报错问题
    SQL注入漏洞全接触入门篇
    Fiddler做弱网测试的步骤
    软件测试基础知识点总结
  • 原文地址:https://www.cnblogs.com/findumars/p/4781195.html
Copyright © 2020-2023  润新知