Pregunta sobre android, toolchain, windows-7 – Cómo construir una cadena de herramientas independiente de Android en Windows 7

3

Estoy intentando construir una cadena de herramientas independiente utilizando ndk 8 para mips siguiendo "docs \ STANDALONE-TOOLCHAIN.html" pero cuando ejecuto el siguiente comando "make-standalone-toolchain.sh --platform = android-14 --install-dir = / tmp / my-android-toolchain "en el símbolo del sistema obtuve los siguientes errores

<code>E:\Installed_SDKs\android-ndk-r8\build\tools>make-standalone-toolchain.sh --plat
form=android-14 --arch=mips --install-dir=./mytool
Welcome to Git (version 1.7.9-preview20120201)


Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: name: No such file or directory
./prebuilt-common.sh: line 159: OPTIONS_abstract_Specify: command not found
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: name: No such file or directory
./prebuilt-common.sh: line 159: OPTIONS_abstract_Specify: command not found
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: path: No such file or directory
./prebuilt-common.sh: line 159: path: No such file or directory
./prebuilt-common.sh: line 159: OPTIONS_default_.=: command not found
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: name: No such file or directory
./prebuilt-common.sh: line 159: OPTIONS_abstract_Specify: command not found
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: path: No such file or directory
./prebuilt-common.sh: line 159: path: No such file or directory
./prebuilt-common.sh: line 159: OPTIONS_default_/tmp/ndk-=: No such file or directory
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: path: No such file or directory
./prebuilt-common.sh: eval: line 159: unexpected EOF while looking for matching
`''
./prebuilt-common.sh: eval: line 160: syntax error: unexpected end of file
expr: syntax error
expr: syntax error
./prebuilt-common.sh: line 159: name: No such file or directory
./prebuilt-common.sh: line 159: OPTIONS_abstract_Specify: command not found
./prebuilt-common.sh: line 159: OPTIONS_default_android-3=: command not found
expr: syntax error
expr: syntax error
expr: syntax error
expr: syntax error
expr: syntax error
ERROR: Unknown option '--platform=android-14'. Use --help for list of valid values.
</code>

¿Puede algún cuerpo guiar lo que estoy haciendo mal? o ¿cómo podría construir una cadena de herramientas independiente en Windows 7?

Saludos Ahsan

¿Alguna vez resolvió esto (ya que nadie envió ninguna respuesta)? BonanzaDriver

Tu respuesta

3   la respuesta
4
<code>$ E:>Installed_SDKs/android-ndk-r9d/build/tools/make-standalone-toolchain.sh --platform=android-14 --arch=mips --system=windows-x86_64
</code>

genera/tmp/ndk-/mipsel-linux-android-4.6.tar.bz2 para mi; ahora puedo desempaquetar este archivo paraE:\Installed_SDKs\android-ndk-r8\build\tools\mytool y vivieron felices por siempre.

Para cualquiera que use una versión más nueva del NDK, debe reemplazar --system = windoes-x86_64 por --system = windows con NDK r10d (y probablemente versiones anteriores de NDK r10) Pooks
@Alex Cohn Muchas gracias Vyshakh Amarnath
2

Version corta:

reemplazarexpr -- conexpr en archivo$NDK_HOME/build/tools/prebuilt-common.sh con editor de texto de su elección. A continuación, ejecute como se documenta.

Versión larga:

Los errores de sintaxis que se ven en la salida de la implementación del analizador de argumentos en ndk para Android. Las personas que escribieron este guión decidieron usarexpr comando con expresiones regulares para analizar argumentos en lugar de usarecho $1 | grep .... Sin duda, se ve mucho más limpio (aunque echo-grep se usa en otras secuencias de comandos de ndk), peroexpr No es el comando más estándar. Tiene un conjunto de argumentos comunes a todas las implementaciones como se detalla en la especificación POSIX y todo lo demás podría implementarse de manera diferente o no implementarse en absoluto.

Si miras dentro del archivo$NDK_HOME/build/tools/prebuilt-common.sh en la línea 392 (podría depender de la versión NDK), codifica así:

<code>param=`expr -- "$1" : '^\([^\-].*\)$'`
</code>

Observe cómo los argumentos deexpr están separados por--. Esto esno especificado en POSIXespecificación deexpr. Ni siquiera se menciona en ningúnHombre de Linux. Simplemente funciona porque algunos sistemas host tienenexpr comando que reconoce-- como "dejar de analizar los argumentos". Así que este es claramente un caso de usar unafuncionalidad indocumentada.

Parece que usas Git-bash - versión de bash que viene con mingw32-git y distribuida por git-scm.org. Esta versión no soportaexpr -- Sintaxis a todo el argumento analizando las rupturas de la biblioteca Para arreglarlo, simplemente reemplaza todoexpr -- conexpr en el archivo prebuilt-common.sh Todavía te enviará algunas advertencias, pero el script debería funcionar.

Este truco me funcionó. Estoy usando git-bash en la máquina de Windows 7. El siguiente comando funcionó para mí:make-standalone-toolchain.sh --platform=android-19 --arch=arm --install-dir=/root/iqbal/toolchain --ndk-dir=../../ --system=windows-x86_64 Bens.Raouf
1

Cuando se trata de compilación cruzada de bibliotecas que están escritas en C, requerimos NDK. Pero la compilación de este tipo de biblioteca en Windows es muy difícil y, a veces, está bloqueada y siempre es frustrante. Te aconsejo que pruebes la compilación en Linux. Definitivamente será compilado. Linux / Mac son las mejores plataformas para compilación cruzada. Espero que te ayude

Preguntas relacionadas