我想建立提升iOS开发,我发现一个自动生成脚本github。 大多数图书馆建立良好,我得到了boost.a。我有测试的asio库,它的工作原理。如何建立提升1.56.0升压::上下文对于iPhone(ARM)
但boost :: coroutine构建失败,事实上boost :: context构建失败并出现此错误。
darwin.compile.c++ iphone-build/boost/bin.v2/libs/context/build/darwin-8.1~iphone/release/architecture-arm/link-static/macosx-version-iphone-8.1/target-os-iphone/threading-multi/unsupported.o libs/context/src/unsupported.cpp:7:2: error: "platform not supported" #error "platform not supported" ^ 1 error generated.
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" "-arch" "armv7" "-arch" "armv7s" "-arch" "arm64" "-fvisibility=hidden" "-fvisibility-inlines-hidden" "-DBOOST_AC_USE_PTHREADS" "-DBOOST_SP_USE_PTHREADS" "-std=c++11" "-stdlib=libc++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -gdwarf-2 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -pthread -arch arm -DBOOST_ALL_NO_LIB=1 -DBOOST_CONTEXT_SOURCE -DNDEBUG -D_LITTLE_ENDIAN -I"." -c -o "iphone-build/boost/bin.v2/libs/context/build/darwin-8.1~iphone/release/architecture-arm/link-static/macosx-version-iphone-8.1/target-os-iphone/threading-multi/unsupported.o" "libs/context/src/unsupported.cpp" ...failed darwin.compile.c++ iphone-build/boost/bin.v2/libs/context/build/darwin-8.1~iphone/release/architecture-arm/link-static/macosx-version-iphone-8.1/target-os-iphone/threading-multi/unsupported.o...
和升压::方面的要求说我们应该 指定在bjam的命令行某些附加属性:目标-OS,ABI,二进制格式,结构和地址模型。 更改脚本的bjam命令行建立从
./bjam -j16 --build-dir=iphone-build -sBOOST_BUILD_USER_CONFIG=$BOOST_SRC/tools/build/example/user-config.jam --stagedir=iphone-build/stage --prefix=$PREFIXDIR toolset=darwin architecture=arm target-os=iphonemacosx-version=iphone-${IPHONE_SDKVERSION} define=_LITTLE_ENDIAN link=static stage > "${LOG}" 2>&1
到
./bjam -j16 --build-dir=iphone-build -sBOOST_BUILD_USER_CONFIG=$BOOST_SRC/tools/build/example/user-config.jam --stagedir=iphone-build/stage --prefix=$PREFIXDIR toolset=darwin abi=aapcs binary-format=mach-o address-model=32 architecture=arm target-os=iphone macosx-version=iphone-${IPHONE_SDKVERSION} define=_LITTLE_ENDIAN link=static stage > "${LOG}" 2>&1
现在的编译器做正确的事情,但我得到了另一个错误
darwin.compile.asm iphone-build/boost/bin.v2/libs/context/build/darwin-8.1~iphone/release/abi-aapcs/address-model-32/architecture-arm/link-static/macosx-version-iphone-8.1/target-os-iphone/threading-multi/asm/jump_arm_aapcs_macho_gas.o libs/context/src/asm/jump_arm_aapcs_macho_gas.S:94:11: error: invalid operand for instruction pop v1 ^
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" "-arch" "armv7" "-arch" "armv7s" "-arch" "arm64" "-fvisibility=hidden" "-fvisibility-inlines-hidden" "-DBOOST_AC_USE_PTHREADS" "-DBOOST_SP_USE_PTHREADS" "-std=c++11" "-stdlib=libc++" -x assembler-with-cpp -O3 -finline-functions -Wno-inline -Wall -gdwarf-2 -fexceptions -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -arch arm -DBOOST_ALL_NO_LIB=1 -DBOOST_CONTEXT_SOURCE -DNDEBUG -D_LITTLE_ENDIAN -I"." -c -o "iphone-build/boost/bin.v2/libs/context/build/darwin-8.1~iphone/release/abi-aapcs/address-model-32/architecture-arm/link-static/macosx-version-iphone-8.1/target-os-iphone/threading-multi/asm/jump_arm_aapcs_macho_gas.o" "libs/context/src/asm/jump_arm_aapcs_macho_gas.S" `
不仅仅是pop v1
,以及大量的其他编译错误,并在阅读铛的交叉编译文档, 我决定将-target arm-macho
添加到auto script线213 现在,只有一个错误pop v1
和8个警告这样的:
clang: warning: unknown platform, assuming -mfloat-abi=soft clang: warning: argument unused during compilation: '-arch armv7' clang: warning: argument unused during compilation: '-stdlib=libc++' clang: warning: argument unused during compilation: '-arch arm'
我知道一点点的x86 ASM和我读库/上下文/ src目录/ ASM/jump_arm_aapcs_macho_gas.S,似乎那pop v1
应该是pop {v1}
,我不知道ARM asm,无论如何,我只是想做出这个通过并稍后检查错误。
所以我改变库/上下文/ src目录/ ASM/jump_arm_aapcs_macho_gas.S:94 从pop v1
到pop {v1}
并重新构建这个终于能正常工作。
但只是上下文和协程库建立好。如libs/atomic/src/lockpool.cpp
其他图书馆失败,错误
libs/atomic/src/lockpool.cpp:15:10: fatal error: 'cstddef' file not found
作为一个虚拟的驴,我出去的技能。
有人可以帮我解答吗?
我应该链接所有引用,但是我的声望小于10.我不能发布超过2个链接。
你可能想试试这个https://gist.github.com/emersonxsu/7188a128c28485b2533e – 2015-07-26 06:22:42