编译时混合使用动态库和静态库

编译测试代码时遇到链接错误,未能找到libstdc++、libm和libc等库的静态版本。通过不使用全静态链接,而是采用动态库和静态库混合编译的方法解决。具体操作包括使用-Wl,-Bstatic和-Wl,-Bdynamic链接选项,前者使-l库以静态方式连接,后者以动态方式连接。这样,如-lpthread和-lstdc++等库可以实现动态链接,避免找不到静态库的问题。" 137123124,19871875,嘴强王者算法:Python解决动态区间最值问题,"['算法', '数据结构']
摘要由CSDN通过智能技术生成

         编译某个测试代码时,出现了下面的错误:

# g++ -std=c++11 -o testlurkcli main.cpp -L. -llurkcli-lasl -static
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status

         这个错误,是在最后的链接阶段,没有找到 libstdc++,libm,libc等这几个库。正常而言,这几个库的动态库都是存在的,这里因为使用了”-static”选项,导致链接时没有找到这几个库的静态版本。

         网上查了一下,大部分是推荐把这几个库的静态库版本找到并软连接到/usr/lib64/中。

         不过这里采用一种动态库和静态库混合编译的方法去解决。具体编译过程如下:

# g++ -std=c++11 main.cpp liblurkcli.a libasl.a -lpthread-o testlurkcli

         或者&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值