通过gcc_s链接到gccLDFLAGS有什么区别?

gcc_s是静态库还是gcc共享库?

因为我一直在寻找一种解决方案,其中提到它链接到gcc而在我的情况下只有gcc_s有效。我想知道真正的区别。

<<hidden symbol `__name_here' in /some/library/path.a(_filename.o) is referenced by DSO


在这种情况下,通常可以通过在链接标志(LDFLAGS)中添加“ -l gcc”或“ gcc -print-libgcc-file-name”来解决该问题。但是,与我的其他常规平台(i386,amd64,sparc64)不同,这还不够。经过大量的敲打(公平的说,它也来自音乐),我意识到在链接libc和最终的可执行文件时都必须使用此标志。
链接:http://people.defora.org/~khorben/200903.html

最佳答案

libgcc_s.so是共享库,libgcc.a是静态库。它们不是等效的。可能需要同时链接两者。 libgcc_s包含全局变量,该全局变量在一个进程中不能有多个副本。 libgcc中的代码可以安全地链接多次。

10-02 01:18