1

我正在研究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),因为我已经阅读并尝试了很多。

4

1 回答 1

2

奇怪的是,我不得不删除我现有的 NDK 并重新解压缩它。之后它起作用了。我最初安装了 NDK 作为第一步,但是它应该移到第 15 步之前。

于 2012-10-25T21:39:42.090 回答