makefile を使用して Mac OS X で g++ を使用して正常にコンパイルできるコードがいくつかありますが、Xcode では正常にビルドできません。
Here is the brief overview of the project setup, there are instances of the following:
libA.a
- contains myclass_stub.cpp which implements func()
- Our makefiles would package the library with 'ar -r', which allows replacement of existing methods.
- Xcode would use libtool to package it
program.exe contains myclass.cpp which implements func() as well. and links libA.a statically using g++
If I were to build libA.a and program.exe with Xcode, it complains about "Duplicate symbol" func in myclass_stub.o and myclass.o at link time.
I also tried compiling program.exe with Xcode, and linking it against libA.a that was packaged with 'ar -r', but it stills complains about duplicate symbol.
重複した実装は理想的ではないかもしれませんが、現時点では回避できません。標準の 'ar' と 'g++' を使用して makefile でビルドするコードを取得できた場合、それを機能させるために Xcode で設定する必要があるオプションを知りたいです。
さて、私の質問:
代わりに「ar -r」を使用してライブラリを Xcode にパッケージ化したいと思います。出来ますか?もしそうなら、どのように?既存のシンボルを強制的に置換できる libtool の同様のオプションはありますか?
libtool と 'ar -r' の違いは、Xcode でのビルドと makefile でのビルドの主な違いではないかもしれません。私は同じコンパイラ フラグを持っていますが、入力/オブジェクト ファイルのリストはほとんどの場合、異なる順序になっています。このリンク エラーに対して他に考えられる解決策はありますか?
関連する質問 @ libtool vs ar for creating a static library (xcode linker)を見ましたが、解決策ではありません
ちなみにall-loadと--force-loadもつけてみましたが、x86_64向けにビルドするだけなのであまり効果がないようです。