找不到 -lgcc_s

Biz*_*Biz 14 64-bit gcc 12.04

我正在尝试使用 g77 编译程序,但不断收到以下错误:

/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我在另一个论坛上看到这与 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
Run Code Online (Sandbox Code Playgroud)

小智 6

这是因为虽然 libgcc 存在,但它可能不在ldconfig已知的路径中。通过执行以下操作检查:

sudo /sbin/ldconfig -p | grep libgcc
Run Code Online (Sandbox Code Playgroud)

输出是否显示指向 libgcc 的链接对应于您在上面列出的路径?

您的解决方法可能是将相关库的链接添加到您的编译命令中,例如

g++ program.cpp -L /usr/lib/gcc/x86_64-linux-gnu/4.6/
Run Code Online (Sandbox Code Playgroud)

另一种解决方案可能是自己创建指向库的符号链接。

 ln -s /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so /usr/lib/gcc/libgcc_s.so
Run Code Online (Sandbox Code Playgroud)

  • `ldconfig -p` 不需要 `sudo` (2认同)