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

时间:2015-10-07 03:37:45

标签: macos ld

我在项目中使用了“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)

1 个答案:

答案 0 :(得分:3)

根据man ld

     -noall_load
             This is the default.  This option is obsolete.

换句话说,-noall_load没用,因为它禁止加载静态归档库的所有成员,但是默认情况下禁用它。链接器警告只是为了让您知道您正在向链接器传递无用选项。虽然无用的选项不会对您的构建造成任何伤害,但无用的选项可能会使人混淆和分散注意力,如果在将来的某个版本中完全删除该选项,则可能导致构建失败并显示错误。

更新:根据您的评论,您尝试对某些档案进行-all_load,而不是其他档案。您不能在同一个链接器调用中组合-all_load-noall_load,但可以使用-force_load来完成。