Why clang/cc needs libgcc_s in 11.4-R

Jin Guojun[VFF] jguojun at gmail.com
Sat Jun 20 04:50:20 UTC 2020

This looks like a clang issue since version 6 because there is 
libgcc_s.so in /usr/lib, and it is a symlink to /lib/libgcc_s.so.1.
A number of discussions about this issue on the Internet, but no real 
solution found.

Does anyone have an idea on how to work around this problem?


ll /usr/lib/libgcc_s.so
lrwxr-xr-x  1 root  wheel  23 Jun 12 11:28 /usr/lib/libgcc_s.so@ -> 

ll  /lib/libgcc_s.so.1
-r--r--r--  1 root  wheel  98912 Jun 12 11:28 /lib/libgcc_s.so.1

file /lib/libgcc_s.so.1
/lib/libgcc_s.so.1: ELF 64-bit LSB shared object, x86-64, version 1 
(FreeBSD), statically linked, stripped

On 06/19/20 20:49, Jin Guojun[VFF] wrote:
> Just installed 11.4-R and try to build a shared library by passing 
> relocation flag from cc -Wl,-r to ld, but ld complains -lgcc_s not found:
> FBSD11: cc -Wl,-r -o libpixrect.so `lorder rast_mem.so rast_dump.so | 
> tsort`
> /usr/bin/ld: cannot find -lgcc_s
> cc: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> FBSD11: cc -Wl,-r,-v -v -o libpixrect.so `lorder rast_mem.so 
> rast_dump.so | tsort`
> FreeBSD clang version 10.0.0 (git at github.com:llvm/llvm-project.git 
> llvmorg-10.0.0-0-gd32170dbd5b)
> Target: x86_64-unknown-freebsd11.4
> Thread model: posix
> InstalledDir: /usr/bin
>  "/usr/bin/ld" --eh-frame-hdr -dynamic-linker /libexec/ld-elf.so.1 
> --hash-style=both --enable-new-dtags -o libpixrect.so /usr/lib/crt1.o 
> /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib -r -v rast_dump.so 
> rast_mem.so -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc 
> --as-needed -lgcc_s --no-as-needed /usr/lib/crtend.o /usr/lib/crtn.o
> GNU ld 2.17.50 [FreeBSD] 2007-07-03
> /usr/bin/ld: cannot find -lgcc_s
> Why clang depends on gcc library?
> Is any flag or ENV variable can overwrite this requirement?
> If not, where can I get the libgcc_s?
> Thanks in advance,
> -Jin

More information about the freebsd-questions mailing list