【发布时间】:2013-04-30 07:50:34
【问题描述】:
我正在尝试为我的 C++ xcode 应用程序从几个静态库(我自己的库)中链接所有未引用的符号。我已经尝试了所有与“strip”相关的属性(通过搜索“strip”的属性),但是未引用的符号,特别是类,没有链接。
我也尝试了 -r 链接器标志,但链接器只抱怨: 'ld: -r 和 -dead_strip 不能一起使用'
我尝试将“-no_dead_strip”添加到链接器标志,但链接器只是告诉我 '-no_dead_strip' 被忽略。
我使用“Apple LLVM”和“LLVM GCC”得到相同的结果。
所以,我的问题是:我应该使用什么链接器标志或目标属性来关闭所有死代码剥离并强制链接未引用的类?
【问题讨论】:
-
或许可以试试
--whole-archive链接器标志? -
Android 的 NDK 在其“本机粘合”(静态库)中包含一个名为
app_dummy()的空函数,该函数没有实现。从客户端调用它(链接到提到的库)显然可以防止在该编译单元中剥离符号。我一直在寻找更优雅的方法,但似乎没有。