在IPerf的官网上有IPerf3对应的Android 版本可以下载(https://iperf.fr/iperf-download.php),是在Google的源代码库中,但Google被天朝伟大的Great Firewall of China给屏蔽了,不如自己动手编译一个试试。
以下是翻译:———————————————————————
https://stackoverflow.com/questions/40975003/iperf3-execution-from-android-7-doesnt-work
如果你正在使用ubuntu软件库中的构建工具链,那么构建出的二进制可执行文件在Android 7.0上将无效,因为那是那是一个老版本的构建链,你需要使用新版本的NDK(现在是版本是r13B)来构建二进制文件。
我是如何解决这个问题的:
注意 :iperf3使用了一个Android不能访问的文件夹来缓存结果。你需要改变这个文件使iperf3正常工作。请参考https://github.com/esnet/iperf/blob/670c18584bcf7a285f3561eb7ea38cc53600d0ab/src/iperf_api.c#L2621
Android.mk
我认为在这个脚本中引入.h文件是没有必要的。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -fPIE
LOCAL_LDFLAGS += -fPIE -pie
LOCAL_MODULE := iperf3
LOCAL_SRC_FILES := cjson.c \
cjson.h \
flowlabel.h \
iperf.h \
iperf_api.c \
iperf_api.h \
iperf_error.c \
iperf_client_api.c \
iperf_locale.c \
iperf_locale.h \
iperf_server_api.c \
iperf_tcp.c \
iperf_tcp.h \
iperf_udp.c \
iperf_udp.h \
iperf_sctp.c \
iperf_sctp.h \
iperf_util.c \
iperf_util.h \
main.c \
net.c \
net.h \
portable_endian.h \
queue.h \
tcp_info.c \
tcp_window_size.c \
tcp_window_size.h \
timer.c \
timer.h \
units.c \
units.h \
version.h
include $(BUILD_EXECUTABLE)
Application.mk
APP_ABI := all
APP_PLATAFORM := android-16
我认为使用ndk-build为不同架构平台构建iperf3更加容易,例如x86架构
翻译结束————————————————————————-
说明几点: