2011-03-22 29 views
0

我們有一些代碼可以在Mac OS X上用g ++使用makefiles編譯,但是我無法用Xcode成功構建。如何允許在鏈接時用Xcode替換現有的方法?使用'ar -r'而不是libtool?

這裏是項目設置的簡要概述,有以下的情況:

  1. libA.a

    • 包含myclass_stub.cpp它實現FUNC()
    • 我們makefiles會使用'ar -r'打包庫,從而允許替換現有的方法。
    • Xcode中會使用libtool將它打包
  2. 的Program.exe 包含myclass.cpp它實現FUNC()爲好。 和鏈接libA.a靜態使用G ++

如果我要建立libA.a並在Xcode PROGRAM.EXE,它抱怨「重複的符號」 FUNC在myclass_stub.o和myclass.o在鏈接時。

我也嘗試用Xcode編譯program.exe,並將其與libA.a鏈接,它與'ar -r'打包在一起,但它仍然抱怨重複的符號。

重複執行可能不理想,但目前我無法解決它。如果我可以使用標準的'ar'和'g ++'來獲得使用makefiles構建的代碼,我想知道我需要在Xcode中設置哪些選項才能工作。

現在,我的問題:

  1. 我想用 'AR-R' 打包在Xcode的庫,而不是。可能嗎?如果是這樣,怎麼樣? libtool有沒有類似的選項,我可以強制替換現有的符號?

  2. 我想libtool和'ar -r'之間的區別可能不是構建Xcode和makefile之間的主要區別。我確實有相同的編譯器標誌,但輸入/目標文件列表大多可能以不同的順序排列。你看到這個鏈接錯誤的其他可能的解決方案嗎?

我看到了相關質疑@ libtool vs ar for creating a static library (xcode linker),但不是解決

順便說一句,我也試過將所有負載和--force負荷,但他們似乎並沒有做做了很多,因爲我只是想爲x86_64構建。

回答

0

我不知道Xcode的東西,但你有沒有想過使用弱符號(以g ++:屬性((弱)))爲該應該重寫的符號?

相關問題