进程链接静态库,但是生成进程中没有静态库的符号表

在编译测试进程中遇到问题,链接libxxx.a后,nm无法找到静态库的符号表。问题源于main.cpp和静态库中有相同变量定义但未报错。通过使用-Wl,--whole-archive选项,强制将整个静态库链接到可执行文件中,解决了默认情况下主函数未引用导致的链接问题。
摘要由CSDN通过智能技术生成

今天编译测试进程的时候,链接了libxxx.a,但是生成的进程中nm找不到对应的静态库符号表。

前提:

进程mak仅编译一个main.cpp,然后链接相应的库

搞了好几天,在main.cpp和静态库libxxx.a中定义了相同的变量,发现居然不报错。

在main.cpp中extern libxxx.a中变量并使用,发现可以正常链接静态库了。

查了一下网上说的,发现可以使用如下内容链接选项:

使用 -Wl,–whole-archive 选项会强制将整个静态库连接到可执行文件中,-Wl,–no-whole-archive 是结束标志。

看来默认情况下主函数不引用静态库中的定义,是链接不到进程中的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值