背景
最近需要在安卓手机上执行一个能转发udp的功能,手机是魅蓝note2,于是我决定用nc,结果发现rom并没有自带,于是手机root,并安装了busybox工具箱,结果发现它是阉割版的,并没有办法发送udp或者tcp。在网上找了半天,没有找到合适的工具。决定自己编译一个。万能的github 上发现CyanogenMod的netcat实现,下载下来,开始编译。
编译过程
推荐使用linux版的NDK,我用的r10e版本,下载下来就能开始编译。刚开始编译的时候,输入 ./ndk-build NDK_PROJECT_PATH=/home/ic2y/code/github/android_external_netcat
提示找不到Android.mk文件,研究发现,下载下来的代码并不能直接用,需要都放在jni文件夹里,这样,ndk就能正确找到源码了。
创建了jni文件夹,开始编译,又发生了fatal error: arpa/telnet.h: No such file or directory 错误,经过研究,发现需要在jni下创建Application.mk文件,并且需要修改原来的Android.mk的文件才能适应新版本的NDK。
修改如下(Application.mk):
APP_ABI := armeabi
APP_STL := stlport_static
APP_PLATFORM := android-21
修改如下(Android.mk):
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := netcat
LOCAL_SRC_FILES:=\
netcat.c \
atomicio.c
include $(BUILD_EXECUTABLE)
最后编译成功的二进制文件,netcat百度盘