链接器错误:/usr/bin/ld:找不到 -lgcc_s

Ale*_*lex 5 ubuntu gcc

我正在尝试编译symlinkstar.gz-file),这是一个非常小的工具,只有一行用于编译:

gcc -Wall -Wstrict-prototypes -O2 -N -s -o symlinks symlinks.c
Run Code Online (Sandbox Code Playgroud)

这给出了错误

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

的输出

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

libgcc_s.so.1 (libc6) => /lib/i386-linux-gnu/libgcc_s.so.1
Run Code Online (Sandbox Code Playgroud)

并尝试直接包含提到的目录

gcc -Wall -Wstrict-prototypes -L /lib/i386-linux-gnu/  -O2 -N -s -o symlinks symlinks.c
Run Code Online (Sandbox Code Playgroud)

产生相同的错误。

三个问题:

  1. 为什么它不适用于第一个命令,因为库似乎位于搜索路径中
  2. 为什么包含路径本身没有帮助
  3. 如何解决这个问题?

Ale*_*lex 0

解决办法:省略选项-N

  • @Alex 请不要混合“gcc”和“ld”标志。他们是完全不同的。如果你想在 gcc 中进行静态链接,请使用 `-static`。您也可能对“-static-libgcc”感兴趣。它们是大量未记录的 gcc 标志,因为它在重新处理之前将几乎所有输入标志转换为内部形式,因此不要对未记录标志的意外结果感到惊讶。 (2认同)