将C代码(netcat)编译为本机Android可执行文件

时间:2011-05-29 14:31:26

标签: android c android-ndk native

我正在编写一个使用Netcat通过网络连接提供帧缓冲的bash脚本,但首先我需要将其编译为本机可执行文件。我甚至让这个脚本在Ubuntu机器上运行,默认安装了netcat。

我发现了这个https://github.com/android/platform_external_netcat,但根本没有NDK的经验。这显然不会使用JNI或Java,因此制作Android应用程序的默认方法不会让我随处可见。

所以问题是。如何从此源代码中获取可执行文件?

2 个答案:

答案 0 :(得分:3)

如果有人想知道,这来自NDK文档:

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

更具体地说,对于来自https://github.com/android/platform_external_netcat

的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的路径。

答案 1 :(得分:1)

查看docs / STANDALONE-TOOLCHAIN.html下的Android sdk,它描述了如何将ndk用作可以生成arm二进制文件的独立编译器。