【问题标题】:difference between -lgcc_s and gcc-lgcc_s 和 gcc 之间的区别
【发布时间】:2011-05-31 15:34:26
【问题描述】:

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

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

【问题讨论】:

标签: gcc compiler-construction linker loader


【解决方案1】:

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

【讨论】:

  • 嗨,谢谢,
  • @kumar:一些符号(例如__register_frame)仅在libgcc_s中,其他符号(例如__eprintf)仅在libgcc中。分别使用nm -D --defined-only libgcc_s.sonm --defined-only libgcc.a 获取完整列表进行比较。
  • 为什么我们都需要?为什么它们不一样,只有一个静态和另一个动态?
猜你喜欢
  • 2013-11-10
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 2020-09-26
  • 2016-11-09
  • 2012-11-11
相关资源
最近更新 更多