Компиляция Android NDK с ошибками gcc с поддержкой Objective-C

Я работаю над презентацией Джеки Глисона о том, как заставить цель-c скомпилировать на Android, а также над блогом Майкла f1337 на ту же тему (с добавлением работы над Mac OS X, которой я и являюсь). Основное различие между их постами и моими заключается в том, что я работаю над использованием последней версии NDK (r8b). Я следовал за этими шагами:

1) Загрузите последнюю версию NDK здесь: http://developer.android.com/tools/sdk/ndk/index.html

2) Создайте каталог с именем NDK и распакуйте загрузку здесь.

3) В каталоге NDK создайте папку toolchain-src. перейдите в этот каталог.

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. перейдите в этот каталог.

6) Загрузите последний tar-архив binutils здесь: http://ftp.gnu.org/gnu/binutils/

7) Распакуйте файл в текущий каталог.

8) Вернитесь в каталог toolchain-src, создайте каталог gcc.

9) Загрузите gcc, который поддерживает цель c (протестировано с gcc-4.6.1) http://ftp.gnu.org/gnu/gcc/

10) Распакуйте этот файл в папку gcc, затем вернитесь обратно в каталог toolchain-src

11) Перейдите в каталог сборки и отредактируйте файл 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, но я не знаю что починить.

Кто-нибудь знает, как я могу это исправить? Я не ищу внешних ссылок или готовых решений (таких как нестандартный ndk-r7 CrystaX), поскольку я уже читал и много пробовал.

1 ответ

Решение

Странно, но мне пришлось удалить свой существующий NDK и заново разархивировать его. После этого это сработало. Первоначально я установил NDK в качестве первого шага, однако его следует перенести до шага 15.

Другие вопросы по тегам