参考:
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) 文件,但是,可执行程序在运行时,怎么找到动态库文件并加载它呢?