我正在尝试用 g77 编译一个程序但一直出现以下错误:
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
我在另一个论坛上看到这与 libgcc 有关,当寻找 libgcc 时我得到了
>find /usr/ -name libgcc*
/usr/share/doc/libgcc1
/usr/share/lintian/overrides/libgcc1
/usr/lib/libgccpp.so.1.0.3
/usr/lib/libgccpp.so.1
/usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_eh.a
/usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc.a
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_s_32.so
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_s.so
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc_eh.a
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/32/libgcc_s_32.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/32/libgcc_eh.a
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/32/libgcc.a
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/libgcc.a
/usr/lib/ure/lib/libgcc3_uno.so
答案1
这是因为,尽管 libgcc 存在,但它可能不在已知的路径中ldconfig. 通过执行以下操作来检查:
sudo /sbin/ldconfig -p | grep libgcc
输出是否显示 libgcc 的链接与您上面列出的路径相对应?
您的一个解决方法可能是将相关库的链接添加到您的编译命令中例如
g++ program.cpp -L /usr/lib/gcc/x86_64-linux-gnu/4.6/
另一个解决方案可能是自己创建到该库的符号链接。
ln -s /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so /usr/lib/gcc/libgcc_s.so
答案2
https://blog.andrewbeacock.com/2007/10/how-to-add-shared-libraries-to-linuxs.html
在/etc/ld.so.conf.d/
名为.conf
编辑文件并为每个共享库(*.so
文件)目录添加一行,它看起来像这样:
/usr/lib/APPLICATION/lib
重新加载系统范围的库路径列表:
sudo ldconfig