Iperf移植到Android
- 首先下载好源码,并且解压到
external/iperf
目录 - 执行
./configure --host=arm
该步骤会头文件config.h
以及include/iperf-int.h
。缺少该步骤无法通过编译。 编写Android.mk
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_CFLAGS := -DHAVE_CONFIG_H LOCAL_MODULE_TAGS := debug LOCAL_MODULE := iperf LOCAL_SRC_FILES := \ src/Client.cpp \ src/Extractor.c \ src/gnu_getopt.c \ src/gnu_getopt_long.c \ src/Launch.cpp \ src/List.cpp \ src/Listener.cpp \ src/Locale.c \ src/main.cpp \ src/PerfSocket.cpp \ src/ReportCSV.c \ src/ReportDefault.c \ src/Reporter.c \ src/Server.cpp \ src/service.c \ src/Settings.cpp \ src/SocketAddr.c \ src/sockets.c \ src/stdio.c \ src/tcp_window_size.c \ compat/delay.c \ compat/error.c \ compat/gettimeofday.c \ compat/inet_ntop.c \ compat/inet_pton.c \ compat/signal.c \ compat/snprintf.c \ compat/string.c \ compat/Thread.c include $(BUILD_EXECUTABLE)
PS: 按照前辈们的博客(基本是iperf2.0.4或2.0.5),在其Android.mk中,delay是cpp文件,而在iperf2.0.9中是c文件,因此,编辑Android.mk时要特别注意,否则编译时会出现
No rule to make target '*.cpp' needed by '*.o'.stop
。出现这个错误的原因基本是*.cpp
文件不存在,而linux下,编译器提示比较隐晦。
因为写错了文件后缀,出现这个错误而许久无法解决,还是因为自己经验不够啊。编译iperf。可以在当前目录使用
mm
,也可以在父目录使用mmm external/iperf
- 打包
我使用的rom只需在源码根目录使用./mkimage.sh
即可。