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

Posted

技术标签:

【中文标题】如何在 Windows 7 中构建 android 独立工具链【英文标题】:How to build android standalone toolchain in windows 7 【发布时间】:2012-05-18 16:02:43 【问题描述】:

我正在尝试按照“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 中构建独立的工具链

问候 阿山

【问题讨论】:

你有没有想过这个问题(因为没有人提交任何答案)? 【参考方案1】:
$ 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,从此过上幸福的生活。

【讨论】:

对于使用较新版本 NDK 的任何人,您必须将 --system=windoes-x86_64 替换为 --system=windows 为 NDK r10d(也可能是早期版本的 NDK r10)跨度> @Alex Cohn 非常感谢【参考方案2】:

短版

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

加长版

您在来自参数解析器的 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 命令。因此,这显然是使用未记录的功能的情况。

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

【讨论】:

这个技巧对我有用。我在 Windows 7 机器上使用 git-bash。以下命令对我有用:make-standalone-toolchain.sh --platform=android-19 --arch=arm --install-dir=/root/iqbal/toolchain --ndk-dir=../../ --system=windows-x86_64【参考方案3】:

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

【讨论】:

以上是关于如何在 Windows 7 中构建 android 独立工具链的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 7 中使用 mingw 构建 gumbo-parser dll

使用 MinGW 在 Windows 上构建 GLEW 1.7.0

如何安装 JRE 或 JDK 以在 Windows 7 上运行 Android 开发人员工具?

如何在 phonegap 在线或 Windows 上构建 iphone 应用程序? (不含mac系统)

如何在 Unity 中抑制“Windows 不支持 Firebase iOS 构建”错误?

如何在 Xamarin(iOS 和 Android)应用程序中使用 Windows 命名空间?