Pergunta sobre toolchain, windows-7, android – Como construir android toolchain autônomo no windows 7

3

Eu estou tentando criar toolchain autônomo usando ndk 8 para mips, seguindo "docs \ STANDALONE-TOOLCHAIN.html", mas quando eu executo o seguinte comando "make-standalone-toolchain.sh --platform = android-14 --install-dir = / tmp / my-android-toolchain "no prompt de comando recebi erros de acompanhamento

<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>

Qualquer órgão pode orientar o que estou fazendo errado? ou como eu poderia criar toolchain autônomo no windows 7

Atenciosamente Ahsan

Você já descobriu isso (como ninguém apresentou respostas)? BonanzaDriver

Sua resposta

3   a resposta
1

m C, precisamos de NDK. Mas compilar esse tipo de biblioteca no Windows é muito difícil e às vezes preso e é sempre frustrante. Eu aconselho você a experimentar a compilação no Linux. Definitivamente será compilado. Linux / Mac são as melhores plataformas para compilação cruzada. Espero que ajude

2

Versão curta:

substituirexpr -- comexpr no arquivo$NDK_HOME/build/tools/prebuilt-common.sh com editor de texto de sua escolha. Em seguida, execute conforme documentado.

Versão longa:

Os erros de sintaxe que você vê na saída proveniente da implementação do ndk android do analisador de argumentos. As pessoas que escreveram este script decidiram usarexpr comando com expressões regulares para analisar argumentos em vez de usarecho $1 | grep .... Certamente parece muito mais limpo (embora echo-grep usado em outro script do ndk), masexpr não é o comando mais standart. Ele tem um conjunto de argumentos comuns a todas as implementações, conforme detalhado na especificação POSIX e tudo o mais poderia ser implementado de forma diferente ou não implementado.

Se você olhar dentro do arquivo$NDK_HOME/build/tools/prebuilt-common.sh na linha 392 (pode depender da versão do NDK) você codifica assim:

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

Observe como argumentos deexpr são separados por--. Isto énão especificado em POSIXespecificação deexpr. Não é sequer mencionado em qualquerHomem Linux. Isso simplesmente funciona porque alguns sistemas hostexpr comando que reconhece-- como "parar de analisar argumentos". Então, isso é claramente um caso de usar umfuncionalidade não documentada.

Você parece usar o Git-bash - versão do bash que vem com o mingw32-git e distribuído pelo git-scm.org. Esta versão não suportaexpr -- sintaxe para o argumento inteiro analisando quebras de biblioteca. A fim de consertá-lo - basta substituir todosexpr -- comexpr no arquivo prebuilt-common.sh. Ainda vai lançar alguns avisos em você, mas o script deve funcionar.

Esse truque funcionou para mim. Estou usando o git-bash na máquina windows 7. O seguinte comando funcionou para mim:make-standalone-toolchain.sh --platform=android-19 --arch=arm --install-dir=/root/iqbal/toolchain --ndk-dir=../../ --system=windows-x86_64 Bens.Raouf
4
<code>$ E:>Installed_SDKs/android-ndk-r9d/build/tools/make-standalone-toolchain.sh --platform=android-14 --arch=mips --system=windows-x86_64
</code>

/tmp/ndk-/mipsel-linux-android-4.6.tar.bz2 para mim; Agora posso descompactar este arquivo paraE:\Installed_SDKs\android-ndk-r8\build\tools\mytool e viver feliz para sempre.

@Alex Cohn Muito obrigado Vyshakh Amarnath
Para qualquer um usando uma versão mais nova do NDK, você tem que substituir --system = windoes-x86_64 por --system = windows com NDK r10d (e provavelmente versões anteriores do NDK r10 também) Pooks

Perguntas relacionadas