我正在研究Jackie Gleason关于让 Objective-c 在 Android 上编译的演示文稿以及Michael f1337关于同一主题的博客文章(加上在 Mac OS X 上工作,我就是这样)。他们的帖子和我的主要区别在于我正在努力使用最新的 NDK (r8b)。我已按照以下步骤操作:
1)在这里下载最新的NDK:http: //developer.android.com/tools/sdk/ndk/index.html
2)创建一个名为NDK的目录,并在此处解压下载。
3)在NDK目录下,创建文件夹toolchain-src。cd 到这个目录。
4)下载工具链:
git clone https://android.googlesource.com/toolchain/build.git
git clone https://android.googlesource.com/toolchain/gmp.git
git clone https://android.googlesource.com/toolchain/gdb.git
git clone https://android.googlesource.com/toolchain/mpc.git
git clone https://android.googlesource.com/toolchain/mpfr.git
5) 创建目录 binutils。cd 到这个目录。
6) 在此处下载最新的 binutils tar 包:http: //ftp.gnu.org/gnu/binutils/
7) 解压文件到当前目录。
8)回到toolchain-src目录,创建目录gcc。
9)下载支持objective c的gcc(用gcc-4.6.1测试)http://ftp.gnu.org/gnu/gcc/
10) 将此文件解压到 gcc 文件夹中,然后导航回 toolchain-src 目录
11) cd 到构建目录,并编辑 Makefile.in 文件,更改行:
--with-gnu-as --with-gnu-ld --enable-languages=c,c++
to
--with-gnu-as --with-gnu-ld --enable-languages=c,c++,objc
12) 从 gcc 目录,下载并安装 gcc 补丁:
curl http://gcc.gnu.org/bugzilla/attachment.cgi?id=24879 > gcc.patch
cd gcc-4.6.1
patch -p1 < ../gcc-4.6.1.patch
13)在ndk中找到这个文件:build/tools/build-mingw64-toolchain.sh。在此文件中,更改以下行:
var_append GCC_CONFIGURE_OPTIONS "--enable-languages=c,c++"
to
var_append GCC_CONFIGURE_OPTIONS "--enable-languages=c,c++,objc"
14)接下来,在ndk中找到这个文件:build/tools/build-host-gcc.sh。在这里,换行:
ARGS=$ARGS" --enable-languages=c,c++"
to
ARGS=$ARGS" --enable-languages=c,c++,objc"
15) 进入 bash 终端(通过键入 bash),然后输入这些行(将 <...> 替换为实际路径:
LOC="<path to NDK folder>/android-ndk-r8b/build/tools/build-gcc.sh"
SRC="<path to NDK folder>/toolchain-src"
NDK="<path to NDK folder>/android-ndk-r8b"
TOOL="arm-linux-androideabi-4.6.1"
sh $LOC --gmp-version=4.2.4 --mpfr-version=2.4.1 --mpc-version=0.8.1 --binutils-version=2.23 --try-64 $SRC $NDK $TOOL
这开始工作,但失败并显示以下消息(在输出 config.log 文件中找到):
build-gcc.sh:1771: error: cannot find install-sh, install.sh, or shtool in "<path to NDK>/android-ndk-r8b/build/tools" "<path to NDK>/android-ndk-r8b/build/tools/.." "<path to NDK>/android-ndk-r8b/build/tools/../.."
查看 build-gcc.sh 文件,它的行数远少于 1771。进一步的调查使我相信这个错误发生在 /toolchain-src/gcc/gcc-4.6.1/configure 文件中,但我不知道要解决什么。
有谁知道我该如何解决这个问题?我不是在寻找外部链接或预构建的解决方案(例如 CrystaX 的自定义 ndk-r7),因为我已经阅读并尝试了很多。