Why clang/cc needs libgcc_s in 11.4-R
Jin Guojun[VFF]
jguojun at gmail.com
Mon Jun 22 18:59:02 UTC 2020
It is clang/cc problem because if using ld directly, there is no problem.
It is not clear why cc passes -lgcc_s requirement to ld when -Wl,-r flag
presents, and this looks like a bug in cc.
Why ld complains libgcc_s does not exist, where the libgcc_s.so does
exist in /usr/lib directory, is a different issue.
On 06/19/20 21:50, Jin Guojun[VFF] wrote:
> 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?
>
> -Jin
>
> ll /usr/lib/libgcc_s.so
> lrwxr-xr-x 1 root wheel 23 Jun 12 11:28 /usr/lib/libgcc_s.so@ ->
> ../../lib/libgcc_s.so.1
>
> 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