我疯了......我正在尝试将我的项目的升级版本从1.44.0升级到osx雪豹上的1.47.0 .-我想用以下命令构建它:
./b2 macosx-version=10.6 link=static address-model=32_64 threading=multi stage
我希望它能给我一个支持i386以及x86_64的静态胖版本。无论如何,它显然没有,因为如果我查询生成的库的lipo -info
,它们都是x86_64 .-我该怎么做才能解决这个问题?可能是构建脚本坏了吗?
答案 0 :(得分:2)
我通过使用这个版本来实现它:
./ b2 link = static threading = multi toolset = darwin cxxflags =“ - arch i386 -arch x86_64”macosx-version = 10.6 stage
答案 1 :(得分:2)
这对我有用。
./b2 link=static threading=multi toolset=darwin cxxflags="-arch i386 -arch x86_64" target-os=darwin address-model=32_64 stage
答案 2 :(得分:1)
让我在MacOSX 10.6上构建Boost 1.49的胖二进制文件的唯一方法是使用参数architecture = x86和address-model = 32_64。
答案 3 :(得分:1)
我尝试了很多选项,但没有一个产生32位和64位架构的通用二进制文件。最终为我工作的是这一个:
./b2 threading=multi toolset=darwin architecture=x86 target-os=darwin address-model=32_64 stage
这是山狮的1.51.0提升。
答案 4 :(得分:0)
您应该添加选项“架构”,例如:
./b2 macosx-version=10.6 link=static address-model=32_64 architecture=combined threading=multi stage
答案 5 :(得分:0)
我在构建32/64组合版本时也遇到了问题,最终还是单独构建了两个版本(我必须添加cxx标志" -arch i386"到32位版本)并使用脂肪来组合它们。例如:
./bjam link=static release install address-model=32 --prefix=$prefix_dir-x86" --python-buildid=2.7 python=2.7 --with-python cxxflags="-fPIC -Wfatal-errors -arch i386" -s NO_BZIP2=1 -s NO_ZLIB=1
./bjam link=static release install address-model=64 --prefix=$prefix_dir-x64" --python-buildid=2.7 python=2.7 --with-python cxxflags="-fPIC -Wfatal-errors" -s NO_BZIP2=1 -s NO_ZLIB=1
lipo $prefix_dir-x86/lib/libboost_python-2_7.a $prefix_dir-x64/lib/libboost_python-2_7.a -output $prefix_dir-universal/libboost_python-2_7.a -create
鉴于我在添加" -arch i386"之前仍然有64位二进制文件(当我请求32位时),我怀疑bjam / b2&s已经存在问题在macos上构建32位二进制文件的脚本。