3

我正在尝试按照“docs\STANDALONE-TOOLCHAIN.html”使用 ndk 8 为 mips 构建独立工具链,但是当我运行以下命令“make-standalone-toolchain.sh --platform=android-14 --install-dir= /tmp/my-android-toolchain" 在命令提示符中出现以下错误

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.

任何身体都可以指导我做错了什么!或者我如何在 Windows 7 中构建独立的工具链

问候阿山

4

3 回答 3

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

为我生成/tmp/ndk-/mipsel-linux-android-4.6.tar.bz2;现在我可以解压这个文件E:\Installed_SDKs\android-ndk-r8\build\tools\mytool并从此过上幸福的生活。

于 2014-07-27T07:39:37.147 回答
2

短版

expr --用您选择的文本编辑器替换expr文件中的内容。$NDK_HOME/build/tools/prebuilt-common.sh然后按照记录运行。

长版

您在来自参数解析器的 android ndk 实现的输出中看到的语法错误。编写此脚本的人决定使用expr带有正则表达式的命令来解析参数,而不是使用echo $1 | grep .... 它确实看起来更干净(即使在 ndk 的其他脚本中使用了 echo-grep),但expr不是最标准的命令。它有一组对所有实现通用的参数,如 POSIX 规范中详述的那样,其他一切都可以以不同的方式实现或根本不实现。

如果您查看$NDK_HOME/build/tools/prebuilt-common.sh第 392 行的文件(可能取决于 NDK 版本),您的代码如下:

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

注意 的参数expr是如何用 分隔的--。这在 POSIX规范中没有指定。它甚至没有在任何Linux man中提及。它之所以有效,是因为某些主机系统具有可识别为“停止解析参数”的命令。因此,这显然是使用未记录功能的情况。exprexpr--

您似乎使用 Git-bash - 由 git-scm.org 分发的 mingw32-git 附带的 bash 版本。此版本不支持expr --整个参数解析库中断的语法。为了修复它 - 只需将所有替换expr --exprprebuilt-common.sh 文件中的所有内容。它仍然会向您发出一些警告,但脚本应该可以工作。

于 2015-07-16T10:28:21.153 回答
1

当涉及到用 C 编写的库的交叉编译时,我们需要 NDK。但是在 Windows 上编译这种类型的库非常困难,有时会卡住,而且总是令人沮丧。我建议你尝试在 Linux 上编译。它肯定会被编译。Linux/Mac 是交叉编译的最佳平台。我希望它会有所帮助

于 2014-09-08T10:09:22.510 回答