问题描述:
在进行gcc静态编译的时候,有时候会出现 /usr/bin/ld: cannot find -lxxxx错误,比如/usr/bin/ld: cannot find -lstdc++,
/usr/bin/ld: cannot find -ldl等等,出现此类问题,一般有以下原因:
第一:没有安装C/C++ 静态库,因为在通过以下命令安装gcc时,默认安装的只是C/C++的动态库,静态库需要单独安装。
yum install gcc gcc-c++
第二:安装有C/C++静态库,但是没有在共享目录,即没有将库文件导入ld检索目录中。
解决办法:通过以下命令确定是否安装C/C++静态库:
find / -name libstdc++.a
若没有检索到libstdc++.a文件,则为第一种原因造成的,若检索到libstdc++.a文件,则为第二种原因造成的。(不排除还有其他原因);
第一种原因的解决办法,安装C/C++静态库
yum install glibc-static libstdc++-static –y
第二种原因的解决办法:
1. 创建软连接(要使用绝对路径创建)
ln -sv sourcefile destfile
2.检查/etc/ld.so.conf中的库文件路径是否正确,如果库文件不是使用系统路径,/usr/lib, /usr/local/lib, 那么必须在文件中加入。
3.ldconfig 重建ld.so.cache文件,ld的库文件检索目录存放文件。尤其刚刚编译安装的软件,必须运行ldconfig,才能将新安装的
库文件导入ld.so.cache.