-lgcc_s和gcc之间的区别

kum*_*mar 14 compiler-construction linker gcc loader

链接gcc_sgcc通过链接有什么区别LDFLAGS

gcc_s静态库和gcc共享库吗?

因为我正在寻找一个解决方案,其中提到链接反对,gcc而只gcc_s在我的情况下工作.我想知道真正的区别.

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

在这种情况下,通常通过向gcc -print-libgcc-file-name链接标志(LDFLAGS)添加"-l gcc"或" "来解决问题.但是,与我的其他常规平台(i386,amd64,sparc64)不同,这还不够.经过大量的头脑冲击(公平地说,它也来自音乐)我意识到这个标志在链接libc 最终的可执行文件时都是必要的.链接:http://people.defora.org/~khorben/200903.html

Mar*_*wis 15

libgcc_s.so是一个共享库,libgcc.a是一个静态库.它们并不等同; 可能有必要将两者联系起来.libgcc_s包含全局变量,它们在进程中不能有多个副本; libgcc中的代码可以安全地多次链接.

  • @kumar:某些符号(例如`__register_frame`)仅在libgcc_s中,其他符号(例如`__eprintf`)仅在libgcc中.使用`nm -D --defined-only libgcc_s.so` resp.`nm --defined-only libgcc.a`获取要比较的完整列表. (4认同)
  • 为什么我们两个都需要?为什么它们不一样,只有一个静态而另一个是动态的? (3认同)