Компилирование инструментов Unix для Android - PullRequest
0 голосов
/ 27 апреля 2011

Я хочу использовать некоторые инструменты Unix на своем рутированном телефоне на базе Android Arm6.Я буду использовать инструменты кросс-компиляции , предоставленные здесь .Если я хочу скомпилировать gnu netcat, как установить префикс кросс-компилятора на arm-none-linux-gnueabi- и как включить статическое связывание (без общей библиотеки).

Ответы [ 2 ]

2 голосов
/ 03 августа 2013

Мне удалось кросс-компилировать rsync для Android с помощью Ubuntu arm-linux-gnueabi toolchain. Смотрите этот связанный вопрос .

1 голос
/ 27 апреля 2011

Если вам особенно не нужно собирать против более стандартного libc, чем bionic, вы можете просто использовать набор инструментов ndk, либо скопировав пример hello-jni и изменив BUILD_SHARED_LIBRARY на BUILD_EXECUTABLE в jni / Android.mk, либо используя скрипт для создать автономный набор инструментов. Возможно, вы захотите использовать опцию V = 1 для скрипта ndk-build, чтобы увидеть команды, которые он выдает своему gcc.

В противном случае вам может понадобиться передать префикс скрипту configure или вручную отредактировать его в Makefile для проекта. Это часто не удавалось, так как во многих проектах системы не были настроены для кросс-компиляции, мне пришлось прибегнуть к редактированию скрипта configure, чтобы установить префиксы и пропустить тесты, когда он пытается выполнить тестовую программу.

Опция, которая иногда работает, когда система сборки более сложна, чем требуется проекту, - это выполнить настройку для вашего хоста (будем надеяться, что это Linux). Затем вручную отредактируйте сгенерированный Makefile, чтобы изменить все, что нужно для сборки под Android. Может быть, неплохо было бы сделать чистку на всякий случай (особенно, если вы делали тестовую сборку хоста). А затем выполните сборку, которая подберет компилятор arm из ваших модификаций Makefile.

Наконец, если вы можете довольствоваться исходным netcat от Hobbit, а не версией gnu, вам вряд ли придется портировать его на себя, как это уже было сделано. В дереве Google уже есть версия для Android на https://android.googlesource.com/platform/external/netcat который уже может быть на вашем устройстве (как 'nc') и определенно включен в альтернативные ПЗУ, такие как Cyanogenmod.

...