ld: cannot find -lxxx终极解决方法

这是因为某些库比如libxxx.so在编译时没有找到,排查时有以下几个思路:

  1. libxxx.so文件是否确实存在
  2. libxxx.so存放目录是否已经包含进项目
  3. 可以通过以下命令查看系统如何查找libxxx.so文件的具体路径
ld -lxxx --verbose

lpthread为例,如下系统在第四次查找时找到了对应的文件:

ld -lpthread --verbose
# 系统查找路径如下:
ld: mode elf_x86_64
attempt to open /usr/local/lib/x86_64-linux-gnu/libpthread.so failed
attempt to open /usr/local/lib/x86_64-linux-gnu/libpthread.a failed
attempt to open /lib/x86_64-linux-gnu/libpthread.so failed
attempt to open /lib/x86_64-linux-gnu/libpthread.a succeeded

附一些常见gcc参数备忘:

-c 只编译并生成目标文件
-IDIRECTORY  指定头文件搜索路径为DIRECTORY,即.h文件所在目录
-LDIRECTORY 指定额外库函数的搜索路径为DIRECTORY,即.so文件所在目录
-lLIBRARY 指定额外库函数的LIBRARY,用了libcurl.so就要添加 -lcurl
-o 指定生成文件
-shared 生成共享目标文件,即生成.so文件
-g debug版本
-w 不生成警告
-Wall 生成警告
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值