difference between -lgcc_s and gcc

kumar picture kumar · Dec 28, 2010 · Viewed 13.4k times · Source

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

Answer

Martin v. L&#246;wis picture Martin v. Löwis · Dec 28, 2010

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.