如何在Windows 7中构建android独立工具链

时间:2012-05-10 05:23:42

标签: android windows-7 toolchain

我正在尝试使用ndk 8为mips构建独立工具链,方法是“docs \ STANDALONE-TOOLCHAIN.html”,但是当我运行以下命令时“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中构建独立的工具链

此致 阿赫桑

3 个答案:

答案 0 :(得分: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,并且从此过上幸福的生活。

答案 1 :(得分:2)

简短版

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

长版

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

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

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

请注意expr的参数如何由--分隔。这是在POSIX specification of expr中指定的。在任何Linux man中都没有提到它。它之所以有效,是因为某些主机系统具有expr命令,可将--识别为&#34;停止解析参数&#34;。所以这显然是使用未记录的功能

你似乎使用Git-bash - 由git-scm.org发布的mingw32-git附带的bash版本。此版本不支持解析库中断的整个参数的expr --语法。要修复它 - 只需在prebuilt-common.sh文件中将所有expr --替换为expr。它仍会向你发出一些警告,但脚本应该有效。

答案 2 :(得分:1)

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