这是因为某些库比如libxxx.so
在编译时没有找到,排查时有以下几个思路:
-
libxxx.so
文件是否确实存在 -
libxxx.so
存放目录是否已经包含进项目 - 可以通过以下命令查看系统如何查找
libxxx.so
文件的具体路径
ld -lxxx --verbose
以lpthread
为例,如下系统在第四次查找时找到了对应的文件:文章来源:https://www.toymoban.com/news/detail-522330.html
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参数备忘:文章来源地址https://www.toymoban.com/news/detail-522330.html
-c 只编译并生成目标文件
-IDIRECTORY 指定头文件搜索路径为DIRECTORY,即.h文件所在目录
-LDIRECTORY 指定额外库函数的搜索路径为DIRECTORY,即.so文件所在目录
-lLIBRARY 指定额外库函数的LIBRARY,用了libcurl.so就要添加 -lcurl
-o 指定生成文件
-shared 生成共享目标文件,即生成.so文件
-g debug版本
-w 不生成警告
-Wall 生成警告
到了这里,关于ld: cannot find -lxxx终极解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!