what is the difference between linking against gcc_s
and gcc
by means of LDFLAGS
?
Is gcc_s
a static library and gcc
shared library?
Because I was looking for a solution where it is mentioned to link against gcc
whereas only gcc_s
works in my case. I wish to know the real difference.
<<hidden symbol `__name_here' in /some/library/path.a(_filename.o) is referenced by DSO
In this case, the problem is usually solved by adding either "-l gcc" or "gcc -print-libgcc-file-name
" to the linking flags (LDFLAGS). However, unlike my other regular platforms (i386, amd64, sparc64) here it wasn't enough. After a lot of head-banging (to be fair, it also comes from the music) I realized that this flag is necessary both when linking the libc and the final executable file.
link: http://people.defora.org/~khorben/200903.html
libgcc_s.so
is a shared library, libgcc.a
is a static library. They are not equivalent; it may be necessary to link both. libgcc_s contains global variables which must not have multiple copies in a process; the code in libgcc is safe to link multiple times.