我想建立提升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