2015-10-07 83 views
1

我在我的項目中使用了「all_load」和「noall_load」ld標誌,但編譯器/ ld報告noall_load被忽略。它的替代是什麼?什麼是Mac OS X上的「-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) 
+0

你能解釋一下你的用例嗎?你想通過使用這些鏈接器選項來實現什麼? –

+0

@SimonKissane我編輯了我的帖子。總之,lib1應該作爲一個整體存檔鏈接,而lib2和lib3則不應該。應該像這樣鏈接lib1的原因超出了範圍。 – Lion

+0

而不是-all_load,您可以使用-force_load來定位特定的歸檔。 –

回答

2

根據man ld

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

換句話說,-noall_load是沒用的,因爲它會禁用加載靜態歸檔庫中的所有成員,但默認情況下禁用反正。鏈接器警告只是爲了讓你知道你正在向鏈接器傳遞一個無用的選項。雖然無用的選項不會對您的構建造成任何傷害,但無用的選項可能會混淆和分散人們的注意力,並且如果在將來的某個版本中完全刪除該選項,則可能會導致構建失敗並出現錯誤。

更新:根據您的評論,您正在嘗試對某些檔案做-all_load,但不是其他檔案。在相同的鏈接器調用中,您不能通過組合-all_load-noall_load來做到這一點,但您可以使用-force_load來完成此操作。