link 和 runtime-link,搭配shared 和 static

参考:

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

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在 CMake 中,EXPORT 是用于导出 CMake 配置文件的指令,可以将一个或多个 CMake 目标导出到一个配置文件中,并在其他项目中使用这些目标。EXPORT 的作用是将项目的编译信息、依赖关系、安装信息等打包成一个配置文件,方便其他项目引用。 具体来说,EXPORT 指令在创建库时使用,将库的信息导出到一个 CMake 配置文件中,以便其他项目可以使用这个库。EXPORT 的第一个参数是一个名称,用于标识该导出操作。在后续的使用中,可以通过该名称来引用导出的信息。 下面是一个例子,假设我们有一个名为 mylib 的库,需要将其导出到一个名为 MyLibConfig.cmake 的配置文件中: ``` # CMakeLists.txt add_library(mylib STATIC mylib.cpp) add_library(mylib_shared SHARED mylib.cpp) install(TARGETS mylib mylib_shared EXPORT MyLibConfig ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin) install(EXPORT MyLibConfig DESTINATION share/mylib/cmake) ``` 在上面的例子中,我们使用 install 命令来安装 mylib 和 mylib_shared 目标,并将它们导出到名为 MyLibConfig 的 EXPORT 中。ARCHIVE、LIBRARY 和 RUNTIME 指定了目标文件在安装时的位置。最后,我们使用 install(EXPORT) 命令将导出的配置文件安装到 share/mylib/cmake 目录。 其他项目可以使用 find_package 命令来引用这个库,例如: ``` # CMakeLists.txt find_package(MyLibConfig REQUIRED) add_executable(myapp main.cpp) target_link_libraries(myapp mylib) ``` 在上面的例子中,我们使用 find_package 命令来查找名为 MyLibConfig 的配置文件,并将其引用。然后,我们可以使用 target_link_libraries 命令将 mylib 库链接到 myapp 目标上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值