我有一个使用32位增强库(1.48)的应用程序。 1.48版本的boost预先构建在32位平台上,并使用较旧的C ++标准。
例如file libboost_wserialization.dylib
给出
libboost_wserialization.dylib: Mach-O universal binary with 2 architectures
libboost_wserialization.dylib (for architecture i386): Mach-O dynamically linked shared library i386
libboost_wserialization.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
要求已经改变,我想将boost 1.60与C ++ 11和32位链接/使用。
我已经下载了1.60 boost并修改了bootstrap.sh
以包含特定于应用程序的lib和include目录。
我正在运行以下命令
./b2 cxxflags="-std=c++0x -stdlib=libc++" linkflags="-stdlib=libc++" address-model=32 architecture=x86 install
我收到以下错误
error: unknown target CPU 'i686'
表示所有文件。
如果我安装了默认值,那么我就不会获得32位版本的boost库,并且应用程序无法链接。
我如何摆脱这个错误?我正在构建的机器是Mac OS X El capitan 64位。
整个错误是
"clang++" -x c++ -std=c++0x -stdlib=libc++ -O3 -O3 -Wno-inline -Wall -march=i686 -DBOOST_ALL_NO_LIB=1 -DBOOST_MATH_TR1_DYN_LINK=1 -DNDEBUG -I"." -I"libs/math/src/tr1" -c -o "bin.v2/libs/math/build/clang-darwin-4.2.1/release/address-model-32/threading-multi/atanh.o" "libs/math/build/../src/tr1/atanh.cpp"
...failed clang-darwin.compile.c++ bin.v2/libs/math/build/clang-darwin-4.2.1/release/address-model-32/threading-multi/atanh.o...
clang-darwin.compile.c++ bin.v2/libs/math/build/clang-darwin-4.2.1/release/address-model-32/threading-multi/cbrt.o
error: unknown target CPU 'i686'
答案 0 :(得分:0)
尝试使用address-model = 64。
更多信息:http://www.boost.org/build/doc/html/bbv2/reference/tools.html#bbv2.reference.tools.compiler.darwin