/usr/bin/ld: 找不到 -lgcc_s怎么办?

解决问题的步骤

在本地电脑上查找是否有这个库文件

sudo find /usr/ -name libgcc_s.so

结果如下所示

/usr/lib/gcc/x86_64-linux-gnu/7/32/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/7/x32/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/32/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_s.so
/usr/lib/x86_64-linux-gnu/libgcc_s.so

以上说明在本地电脑上有该文件。

查找文件的搜索路径

ld -lgcc_s --verbose

结果如下

试图打开 //usr/local/lib/x86_64-linux-gnu/libgcc_s.so 失败
试图打开 //usr/local/lib/x86_64-linux-gnu/libgcc_s.a 失败
试图打开 //lib/x86_64-linux-gnu/libgcc_s.so 失败
试图打开 //lib/x86_64-linux-gnu/libgcc_s.a 失败
试图打开 //usr/lib/x86_64-linux-gnu/libgcc_s.so 失败
试图打开 //usr/lib/x86_64-linux-gnu/libgcc_s.a 失败
试图打开 //usr/lib/x86_64-linux-gnu64/libgcc_s.so 失败
试图打开 //usr/lib/x86_64-linux-gnu64/libgcc_s.a 失败
试图打开 //usr/local/lib64/libgcc_s.so 失败
试图打开 //usr/local/lib64/libgcc_s.a 失败
试图打开 //lib64/libgcc_s.so 失败
试图打开 //lib64/libgcc_s.a 失败
试图打开 //usr/lib64/libgcc_s.so 失败
试图打开 //usr/lib64/libgcc_s.a 失败
试图打开 //usr/local/lib/libgcc_s.so 失败
试图打开 //usr/local/lib/libgcc_s.a 失败
试图打开 //lib/libgcc_s.so 失败
试图打开 //lib/libgcc_s.a 失败
试图打开 //usr/lib/libgcc_s.so 失败
试图打开 //usr/lib/libgcc_s.a 失败
试图打开 //usr/x86_64-linux-gnu/lib64/libgcc_s.so 失败
试图打开 //usr/x86_64-linux-gnu/lib64/libgcc_s.a 失败
试图打开 //usr/x86_64-linux-gnu/lib/libgcc_s.so 失败
试图打开 //usr/x86_64-linux-gnu/lib/libgcc_s.a 失败
ld: 找不到 -lgcc_s

建立一个硬链接过去,使得可以连接到这个库文件

sudo ln -s  /lib/x86_64-linux-gnu/libgcc_s.so /usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_s.so

建立一个链接到库文件上,注意此时如果还不行,检查对应硬链接的指向,一定不要指向一个空文件。

对于本问题应该掌握的知识

命令行代码知识

主要的命令行代码如下

sudo find /usr/ -name libgcc_s.so
ld -lgcc_s --verbose
sudo ln -s  /lib/x86_64-linux-gnu/libgcc_s.so /usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_s.so

第一行对应的是查找函数,按名称查找。
ldd命令用于判断某个可执行的 binary 档案含有什么动态函式库。–verbose 打印所有信息,例如包括符号的版本信息
ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。建立后面文件的一个链接。

隐含知识

库文件的文件名一般为-libName.so,在编译时的一般为-lName.

参考文献

如果仍然没有帮助,请参考下面网址:Install G77 on Ubuntu >=14.04。

你可能感兴趣的:(杂七杂八)