我们有一些代码可以在 Mac OS X 上使用 makefile 使用 g++ 编译,但我无法使用 Xcode 成功构建。
这是项目设置的简要概述,有以下实例:
库A.a
- 包含实现 func() 的 myclass_stub.cpp
- 我们的 makefile 将使用 'ar -r' 打包库,这允许替换现有方法。
- Xcode 会使用 libtool 来打包它
program.exe 包含 myclass.cpp ,它也实现了 func() 。并使用 g++ 静态链接 libA.a
如果我要使用 Xcode 构建 libA.a 和 program.exe,它会在链接时抱怨 myclass_stub.o 和 myclass.o 中的“重复符号”函数。
我还尝试使用 Xcode 编译 program.exe,并将其与使用 'ar -r' 打包的 libA.a 链接,但它仍然抱怨重复符号。
重复实现可能并不理想,但我目前无法解决它。如果我可以使用标准 'ar' 和 'g++' 使用 makefile 构建代码,我想知道我需要在 Xcode 中设置哪些选项才能使其工作。
现在,我的问题:
我想使用 'ar -r' 将库打包到 Xcode 中。可能吗?如果是这样,怎么做?libtool 是否有类似的选项可以强制替换现有符号?
我想 libtool 和 'ar -r' 之间的区别可能不是使用 Xcode 和 makefile 构建的主要区别。我确实有相同的编译器标志,但输入/目标文件的列表很可能以不同的顺序排列。您是否看到此链接错误的任何其他可能的解决方案?
我看到了一个与 @libtool vs ar 创建静态库(xcode 链接器)相关的问题,但不是解决方案
顺便说一句,我也尝试添加 all-load 和 --force-load,但它们似乎并没有做太多,因为我只是想为 x86_64 构建。