g++指定静态库

GCC/G++链接时优先链接动态库,如果没有动态库,则链接相应的静态库。

所以如果是

g++ testlog.cpp -lglog 那么会优先使用动态库。

想要指定使用静态库

可以使用全名的静态库。

g++ testlog.cpp /usr/lib/aarch64-linux-gnu/libglog.a /usr/lib/aarch64-linux-gnu/libgflags.a

还有一种就是用链接选项-Wl,-Bstatic

GCC/G++也提供了链接选项 -Wl,-Bstatic 和 -Wl,-Bdynamic 供用户指定链接动态库或者静态库。

-Wl,-Bstatic指示跟在后面的-lxxx选项链接的都是静态库,-Wl,-Bdynamic指示跟在后面的-lxxx选项链接的都是动态库。

如下,前面的 -Wl,-Bstatic指示链接libtest.a静态库,后面的 -Wl,-Bdynamic指示链接系统动态库。

g++ testlog.cpp -Wl,-Bstatic -lglog -lgflags -Wl,-Bdynamic 

如果后面不加 -Wl,-Bdynamic,那么所有的库,包括系统库也需要静态链接,如果找不到会报错,如下。 所以使用了-Wl,-Bstatic后需要再使用-Wl,-Bdynamic

uranus@ubuntu:~/code/test$ g++ testlog.cpp -Wl,-Bstatic -lglog -lgflags
/usr/bin/ld: cannot find -lgcc_s: No such file or directory
/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/11/../../../aarch64-linux-gnu/libglog.a(utilities.cc.o): in function `google::glog_internal_namespace_::MyUserNameInitializer()':
(.text.startup+0xdc): warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: cannot find -lgcc_s: No such file or directory
collect2: error: ld returned 1 exit status
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值