如何将两个静态库打包合并到一个静态库中

文章讲述了静态库在链接到目标时的打包规则,说明了静态库与动态库之间的依赖关系。当静态库B依赖A时,A不会被包含在B中,而在链接依赖B的目标时需要同时链接A。动态库则不同,链接静态库A后,A的所有函数会包含在动态库B中。文章还介绍了如何使用CMake和ar命令将多个静态库打包成一个静态库libmerge.a,以便其他目标只需依赖这个合并后的库。

静态库在链接到目标时,只有链接到可执行程序或者动态库,才会将此静态库全部打包到目标中。如果是静态库B依赖静态库A,则正常情况下,静态库A并不会被打包到静态库B中。此时,那些依赖静态库B的库在链接静态库B的同时,还需要链接静态库A。如果是动态库B链接到静态库A,则A的所有函数都会打包到动态库B中。此时,依赖动态库B的目标在链接动态库B的时候,就不需要再链接静态库A了。

另外,如果想把静态库A打包到静态库B中,则需要用ar命令:

cmake_minimum_required(VERSION 3.22.0)
project(test LANGUAGES CXX)

add_library(z_b STATIC b.cpp)

find_library(Z_A NAMES libz_a.a PATHS /home/zhjs/Coding/C++/static_lib_test/z_a/build/)
message(STATUS "################ ${Z_A} #################"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值