Pytanie w sprawie windows-7, toolchain, android – Jak zbudować samodzielny zestaw narzędzi dla Androida w systemie Windows 7

3

Próbuję zbudować samodzielny toolchain przy użyciu ndk 8 dla mips, postępując zgodnie z "docs STANDALONE-TOOLCHAIN.html", ale kiedy uruchomię następujące polecenie "make-standalone-toolchain.sh --platform = android-14 --install-dir = / tmp / my-android-toolchain ”w wierszu polecenia otrzymałem następujące błędy

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

Czy jakiekolwiek ciało może kierować tym, co robię źle? lub jak mogę zbudować samodzielny zestaw narzędzi w systemie Windows 7

Pozdrawiam Ahsan

Czy kiedykolwiek to wymyśliłeś (nikt nie odpowiedział)? BonanzaDriver

Twoja odpowiedź

3   odpowiedź
1

potrzebujemy NDK. Ale kompilacja tego typu biblioteki w systemie Windows jest bardzo trudna, a czasem utknęła i jest zawsze frustrująca. Radzę wypróbować kompilację na Linuksie. Z pewnością zostanie skompilowany. Linux / Mac to najlepsze platformy do kompilacji krzyżowej. Mam nadzieję, że to pomoże

2

Krótka wersja:

zastąpićexpr -- zexpr w pliku$NDK_HOME/build/tools/prebuilt-common.sh z wybranym edytorem tekstu. Następnie uruchom zgodnie z dokumentacją.

Długa wersja:

Błędy składni, które widzisz w danych wyjściowych pochodzących z implementacji parsera argumentów w android ndk. Ludzie, którzy napisali ten skrypt, postanowili użyćexpr polecenie z wyrażeniami regularnymi do analizowania argumentów zamiast używaniaecho $1 | grep .... Z pewnością wygląda na znacznie czystszy (chociaż echo-grep używany w innym skrypcie z ndk), aleexpr nie jest najbardziej standardowym poleceniem. Posiada zestaw argumentów wspólnych dla wszystkich implementacji wyszczególnionych w specyfikacji POSIX, a wszystko inne może być zaimplementowane inaczej lub w ogóle nie zostać zaimplementowane.

Jeśli zajrzysz do pliku$NDK_HOME/build/tools/prebuilt-common.sh w linii 392 (może zależeć od wersji NDK) kodujesz w ten sposób:

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

Zwróć uwagę na argumentyexpr są rozdzielone--. To jestnie określone w POSIXspecyfikacjaexpr. W żadnym nie jest nawet wspominanyLinux człowiek. Po prostu działa, ponieważ niektóre systemy hosta mająexpr polecenie, które rozpoznaje-- jako „przestań analizować argumenty”. Jest to więc wyraźnie przypadek użycianieudokumentowana funkcjonalność.

Wydaje się, że używasz Git-bash - wersji basha dostarczanej z mingw32-git dystrybuowanej przez git-scm.org. Ta wersja nie obsługujeexpr -- składnia do całego argumentu analizującego przerwy w bibliotece. Aby to naprawić - wystarczy wymienić wszystkoexpr -- zexpr w pliku prebuilt-common.sh. Nadal będzie wyświetlać ostrzeżenia, ale skrypt powinien działać.

Ta sztuczka zadziałała dla mnie. Używam git-bash w systemie Windows 7. Dla mnie działało następujące polecenie: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 dla mnie; teraz mogę rozpakować ten plik doE:\Installed_SDKs\android-ndk-r8\build\tools\mytool i żyj długo i szczęśliwie.

Dla każdego, kto używa nowszej wersji NDK, musisz zastąpić --system = windoes-x86_64 przez --system = windows z NDK r10d (i prawdopodobnie również wcześniejsze wersje NDK r10) Pooks
@Alex Cohn Dziękuję bardzo Vyshakh Amarnath

Powiązane pytania