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

3
我正在编写一个bash脚本,使用Netcat将帧缓存通过网络连接进行传输,但首先需要将其编译为本地可执行文件。我甚至已经在Ubuntu机器上让这个脚本工作了,在那里netcat是默认安装的。
我发现了这个https://github.com/android/platform_external_netcat,但完全没有NDK方面的经验。显然,这不使用JNI或Java,因此制作Android应用程序的默认方法无法帮助我。
所以问题是:如何从此源代码中获取可执行文件?

可能是寻找一份关于Android NDK的好教程的重复问题。 - Bo Persson
不是真的。我想要一个ARM可执行文件,而不是.apk包。 - Piotrek Okoński
设备上可能已经有一个编译好的 netcat (nc) 副本。 - Chris Stratton
很奇怪,不是这样的。那是我尝试的第一件事。我的2.3.3 Galaxy S默认具有ping功能,但没有netcat。 - Piotrek Okoński
如果你有一个/system/xbin目录,它可能在那里,而不在你的路径上。 - Chris Stratton
2个回答

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

在 Android SDK 的 docs/STANDALONE-TOOLCHAIN.html 中查找,它描述了如何使用 NDK 作为独立编译器来生成 ARM 二进制文件。


2
就是这样了,谢谢 ;) 此外,我刚刚发现,BusyBox里面有netcat等工具;) - Piotrek Okoński

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接