link 和 runtime-link,搭配shared 和 static

本文探讨了C++库构建时link和runtime-link的四种组合方式,包括link=static runtime-link=static(静态链接)、link=static runtime-link=shared(静态编译动态运行)、link=shared runtime-link=shared(动态链接)。详细解释了各种配置下生成的库文件类型及其对可执行程序的影响,特别指出link=shared runtime-link=static是非法配置。同时,介绍了Windows下boost库的命名规则和动态链接库在运行时的加载机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

http://bbs.sjtu.edu.cn/bbscon,board,C,file,M.1300328832.A.html

http://noteonx.blogspot.com/2009/04/boost.html

http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html


C / C++库的形式,好晕啊!

boost库在build时,./b2 install 后面可以跟一些参数,涉及到动态库、静态库的参数有以下四种搭配方式:

link=static runtime-link=static

link=static runtime-link=shared

link=shared runtime-link=shared

link=shared runtime-link=static (这种配置我试的结果是,报错,这样的搭配是非法的)

究竟它们都是什么意思呢?


我的粗浅理解:

link=static runtime-link=static 

build出来的就是.a (windows .lib) 文件,没有.so (windows .dll) 文件,link到可执行程序中以后,就成为后者的一部分,和后者融为一体了

link=static runtime-link=shared 

build出来的同时有 .a (windows .lib) 文件和 .so (windows .dll) 文件,link时,是指定 .a (windows .lib) 文件,后者成为可执行程序的一部分,运行时,通过融入可执行程序的 .a (windows .lib) 的信息,去动态加载 .so (windows .dll) 文件,其实质仍然是动态链接

link=shared runtime-link=shared

build出来的只有 .so (windows .dll) 文件,没有.a (windows .lib) 文件,但是,可执行程序在运行时,怎么找到动态库文件并加载它呢?

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值