什么是Mac OS X上“-noall_load”标志的替代方法?

5

我在我的项目中使用了"all_load"和"noall_load" ld标志,但编译器/ld报告说忽略了"noall_load"。它的替代方案是什么?

$ cc ... -Wl,-all_load lib1 -Wl,-noall_load lib2 lib3 ...
...
ld: warning: option -noall_load is obsolete and being ignored
...
$ ld -v
@(#)PROGRAM:ld  PROJECT:ld64-253.3
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
LTO support using: Apple LLVM 7.0.0 (clang-700.0.72)

您能否更详细地解释一下您的使用情况?您打算通过使用这些链接器选项来实现什么目标? - Simon Kissane
@SimonKissane,我编辑了我的帖子。一句话,应该将lib1作为整个存档文件链接,而lib2和lib3不应该这样做。为什么应该像这样链接lib1超出了范围。 - Lion
你可以使用-force_load来针对特定的档案,而不是-all_load。 - Simon Kissane
1个回答

6
根据man ld的说明:
     -noall_load
             This is the default.  This option is obsolete.

换句话说,-noall_load是无用的,因为它禁用了加载静态存档库的所有成员,但这已经被默认禁用了。链接器警告只是为了让您知道正在将一个无用的选项传递给链接器。虽然无用的选项不会对构建造成任何伤害,但无用的选项有可能使人们感到困惑和分心,并且如果在未来的某个版本中完全删除该选项,则可能导致构建失败并出现错误。
更新:根据您的评论,您正在尝试在某些存档文件上执行-all_load,而在其他存档文件上不执行。您不能通过在同一链接器调用中组合-all_load和-noall_load来实现此操作,但可以使用-force_load来实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接