永发信息网

静态库如何链接静态库

答案:1  悬赏:50  手机版
解决时间 2021-01-06 13:50
静态库如何链接静态库
最佳答案
在工程搭建时,可能会有将静态库链接成动态库的需求,如出于代码保护的角度,某些模块会发布.a扩展名的静态库,我们要将多个这样的静态库链接成一个动态库。但与直接link目标文件不同的是,ld以默认参数执行时,并把静态库中没有用到的函数过滤掉,导致生成的so并未包含所要的函数,因此要加上--whole-archive参数,以保证所有的函数都包含在生成的so中。
在使用cmake时,CMakeLists.txt的写法如下:
add_library(
${MODULE_NAME}
SHARED
${CMAKE_SOURCE_DIR}/builttime.c #要生成一个so,至少要包含一个源文件,实在没有可以把库的编译时间戳打到这儿。
)

target_link_libraries(
${MODULE_NAME}
${${MODULE_NAME}_EXTRA_LDFLAGS}
"-Wl,--whole-archive" #告诉编译器,从这里开始,所有的库的内容都包含到so中
${LOCAL_MODULES} #可以是以源代码生成的静态库
${PREBUILT_MODULES} #可以是预先生成的静态库
"-Wl,--no-whole-archive" #告诉编译器,从这里开始,以后的库的内容不用都包含到so中
)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我脸上有很多绒毛,是黑色的,怎么才能祛除?
有可载1万人的飞机吗
天策金粮餐饮和仟佶餐饮哪个实力更强
整天满奶子都在想些什么,最后一个简直绝了
行政拘留在派出所有底案吗
鼎盛旅社(威海文登市)地址在什么地方,我要处
水是怎样的开心呵,她将那可怜的失
贵州省思南县公务员2017年最高分是多少,最低
浓度为0.50mol·L-1的某金属阳离子Mn+的溶
马桶标准尺寸大小有哪些
佳能650d18-135mm为什么是广角而600d1-135mm
关于商水三中学习 学风不正 不浓 的作文反思
ATP在生物的各种活动中扮演者能量供应者的角
5分之4减4分之1加6分之1
汤塘中心供电所(汤塘营业厅)地址有知道的么?
推荐资讯
怎么结束exe结尾的进程,ntsd和pchunter都没
TCL L32F1500-3D是什么系统,能安装应用商店
读图,回答下列问题:(1)受地势的影响,我
能简算就简算
xp已经死了,如果继续用xp系统的电脑会怎么样
为什么在大江大河里钓鱼虾子是上选?
宝缇嘉是哪国的品牌
70英尺多少米多
在过去的一年里,接下句?
无人机目前遥控的距离有多远
宝宝两个月九斤二两,身高58cm正常吗
将一个土豆(含有过氧化氢酶)切成大小和厚薄
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?