Замените пути из SYSROOT и CC соответствующим образом.

у bash-скрипт, который использует Netcat для обслуживания кадрового буфера по сетевому соединению, но сначала мне нужно скомпилировать его в собственный исполняемый файл. Я даже заставил этот скрипт работать на машине с Ubuntu, где по умолчанию установлен netcat.

я нашел этоhttps://github.com/android/platform_external_netcat но не имею опыта в NDK вообще. Это, очевидно, не использует JNI или Java вообще, поэтому подход по умолчанию для создания приложений Android никуда меня не приведет.

Так что вопрос в том. Как мне получить исполняемый файл из этого исходного кода?

 Chris Stratton29 мая 2011 г., 16:47
Вероятно, на устройстве уже есть скомпилированная копия netcat (nc).
 Chris Stratton29 мая 2011 г., 18:22
Если у вас есть каталог / system / xbin, он может быть там, а не на вашем пути
 Piotrek Okoński29 мая 2011 г., 16:50
Как ни странно, нет. Это было первое, что я попробовал. По умолчанию у меня 2.3.3 Galaxy S, но не netcat.
 Bo Persson29 мая 2011 г., 16:35
 Piotrek Okoński29 мая 2011 г., 16:44
на самом деле, нет. Я хочу получить исполняемый файл ARM. Не пакет .apk.

Ответы на вопрос(2)

SYSROOT=$NDK/platforms/android-<level>/arch-<arch>/
export CC="$NDK/toolchains/<name>/prebuilt/<system>/bin/<prefix>gcc --sysroot=$SYSROOT"
$CC -o foo.o -c foo.c

Более конкретно, для netcat изhttps://github.com/android/platform_external_netcat

SYSROOT=$NDK/platforms/android-19/arch-arm
CC=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT
$CC -DANDROID -c -o atomicio.o atomicio.c
$CC -DANDROID -c -o netcat.o netcat.c
$CC -o netcat atomicio.o netcat.o

Замените пути из SYSROOT и CC соответствующим образом.

Решение Вопроса

он описывает, как использовать ndk в качестве автономного компилятора, который может создавать двоичные файлы для рук.

 Piotrek Okoński29 мая 2011 г., 17:02
Это довольно много, спасибо;) Кроме того, как я только что узнал, BusyBox имеет, среди прочего, netcat внутри;)

Ваш ответ на вопрос