如何在64位osx上构建i386的提升?

时间:2013-03-24 01:03:46

标签: c++ boost

我正在努力获得1.53的升级链接到为i386编译的应用程序。这是在64位的mac上。似乎boost默认构建为64位,所以当我尝试链接到它时,我收到此错误:

  

ld:警告:忽略文件   /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/local/lib/libboost_system.dylib,   文件是为不支持的文件格式而构建的,而不是   被链接的架构(i386)

我尝试通过此命令构建boost:

  

./ b2 toolset = darwin cxxflags =“ - arch i386”address-model = 32 stage

但它似乎没有什么区别。我的链接器设置是

  

-lboost_system -lboost_thread

我是否需要以不同的方式构建提升,或以不同方式链接到它?

修改

只是想通了这个命令似乎正确构建它:

  

./ b2 toolset = darwin cxxflags =“ - arch i386”address-model = 32 architecture = x86 stage

并为安装做同样的事情

  

./ b2 install toolset = darwin cxxflags =“ - arch i386”address-model = 32 architecture = x86 stage

1 个答案:

答案 0 :(得分:3)

您需要在目标配置中选择架构i386: (Valid Architectures目标中的Build Setting

然而,如果您正在构建应用,则有两种解决方案:

  • 构建应用程序32位,构建一个32位版本的库。
  • 构建64位应用程序。为此,请将i386替换为x86_64和 更改Architectures以及Valid Architectures

enter image description here