Я пытался использовать https://github.com/moritz-wundke/Boost-for-Android для компиляции boost для Android.Сообщается, что 1.69.0 поддерживается для NDK r18b.Я нахожусь под Windows 7.
Я столкнулся со многими проблемами, некоторые из них я мог исправить, но, наконец, я не смог ничего скомпилировать:
- Установлен MinGW
- Установлен MySYS
- Добавлен MySYS в PATH
- Ran build-android.bat
- Ошибка:
<path to NDK r18b> is not a valid NDK root
-> Это потому, что скрипт проверяет, существует ли ndk-build -> В сценарии - заменил "ndk-build" на "ndk-build.cmd". Затем я получил ошибку:
sed: invalid option --E
-> Удален параметр -E из sed в строке 241 - Обратите внимание, чтоЯ вижу много неблокирующих предупреждений
expr: warning: unportable BRE:
- Затем я получил ошибку:
Undefined or not supported Android NDK version: Pkg.Revision = 18.1.5063045
(скорее всего, из-за этой опции -E, которую я только что удалил) -> Заменил "16.0"|....|"18.1")
на *)
и удалил *)
оригинальное утверждение в строках 301/307 - Затем он сообщил, что curl отсутствует, я установил curl и добавил его в свой путь
- Наконец, Boost 1.69.0 загрузка началась
- Затем я получил тонны ошибок, и ничего не было построено:
C:/dev/boost/Boost-for-Android-master/boost_1_69_0/tools/build/src/tools\common.
jam:979: in toolset-tag
*** argument error
* rule numbers.less ( n1 n2 )
* called with: ( 3 )
* missing argument n2 C:/dev/boost/Boost-for-Android-master/boost_1_69_0/tools/build/src/util\numbers.
jam:66:see definition of rule 'numbers.less' being called
и:
am:305: Unescaped special character in argument
<compileflags>$(AndroidNDKRoot)/
toolchains/x86_64-4.9/prebuilt/${PlatformOS}-x86_64 Performing
configuration checks
и наконец:
ERROR: Failed to build boost for android for x86_64!
Есть идеи, что я делаю неправильно?
Редактировать: Согласно https://github.com/moritz-wundke/Boost-for-Android/issues/156, естьпроблема с бустом 1.69.0.Поэтому я попытался с 1.68.0, затем я получаю различные ошибки:
C:\dev\boost\Boost-for-Android-master\boost_1_68_0\tools/build/src\user-config.j
am:70: Unescaped special character in argument <compileflags>$(AndroidNDKRoot)/t
oolchains/aarch64-linux-android-4.9/prebuilt/${PlatformOS}-x86_64
и
error: No best alternative for libs/context/build/asm_sources
next alternative: required properties: <abi>aapcs <address-model>32 <architecture>arm <binary-format>elf <threading>multi <toolset>clang
...
next alternative: required properties: <abi>sysv <architecture>combined <binary-format>mach-o <threading>multi
not matched
и, наконец,
clang-linux.archive ..\build\build\arm64-v8a\boost\bin.v2\libs\atomic\build\clan
g-linux-arm64v8a\release\link-static\target-os-android\threading-multi\libboost_
atomic-clang-mt-a64-1_68.a
'"ranlib"' n'est pas reconnu en tant que commande interne
ou externe, un programme ex'cutable ou un fichier de commandes.
"c:/Android2/android-ndk-r18b/toolchains/llvm/prebuilt/windows-x86_64/bin/ll
vm-ar" rc "..\build\build\arm64-v8a\boost\bin.v2\libs\atomic\build\clang-linux-
arm64v8a\release\link-static\target-os-android\threading-multi\libboost_atomic-c
lang-mt-a64-1_68.a" "..\build\build\arm64-v8a\boost\bin.v2\libs\atomic\build\cla
ng-linux-arm64v8a\release\link-static\target-os-android\threading-multi\lockpool
.o"
"ranlib" "..\build\build\arm64-v8a\boost\bin.v2\libs\atomic\build\clang-linu
x-arm64v8a\release\link-static\target-os-android\threading-multi\libboost_atomic
-clang-mt-a64-1_68.a"
...failed clang-linux.archive ..\build\build\arm64-v8a\boost\bin.v2\libs\atomic\
build\clang-linux-arm64v8a\release\link-static\target-os-android\threading-multi
\libboost_atomic-clang-mt-a64-1_68.a...
...removing ..\build\build\arm64-v8a\boost\bin.v2\libs\atomic\build\clang-linux-
arm64v8a\release\link-static\target-os-android\threading-multi\libboost_atomic-c
lang-mt-a64-1_68.a