Компиляция 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.