参考:
http://blog.chinaunix.net/uid-730738-id-130438.html
http://tigerjibo.blog.51cto.com/7718010/1297332/
1.下载iperf-3.1.1 下载地址:http://download.csdn.net/detail/ivan804638781/9803894
2.arm-linux-gcc-4.4.3交叉编译环境搭建
参考:http://blog.csdn.net/ivan804638781/article/details/69223842
下载地址:http://download.csdn.net/detail/ivan804638781/9803762
3.解压
4.
在当前目录iperf-3.1.1/下执行./configure --host=arm-none-linux-gnueabi,一直出错
configure: error: C compiler cannot create executables
See `config.log' for more details
参考:http://blog.csdn.net/zyxlinux888/article/details/6705486
明白需要在根目录下执行./文件路径/configure --host=arm-none-linux-gnueabi
编译成功
5.在*/iperf-3.1.1/src/下生成文件
注意:
遇到显示iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory
解决办法:运行以下指令
cd /
find ./ | grep libiperf.so.0
echo $LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/libiperf.so.0
export LD_LIBRARY_PATH
iperf3 -s
参考文档:
http://blog.csdn.net/shmnh/article/details/52012093
编译安卓iperf
Android 移植之 iperf 1 .移植准备
1 ,源代码地址:
http://sourceforge.net/projects/iperf/files/iperf/2.0.4%20source/iperf-2.0.4.tar.gz/download
2 ,解压 tar –zxvf iperf-2.0.4.tar.gz
如果你只是生成x86下的可执行文件,那么执行 configure 然后make就可以了!你可以在src目录找到生成的可执行文件。如果需要生成目标板的可执行文件则继续下面的操作
解压 iperf-2.0.4.tar.gz ,并放到 Adroid_root/external
3.创建 Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
compat/Thread.c \
compat/error.c \
compat/delay.cpp \
compat/gettimeofday.c \
compat/inet_ntop.c \
compat/inet_pton.c \
compat/signal.c \
compat/snprintf.c \
compat/string.c
LOCAL_SRC_FILES += \
src/Client.cpp \
src/Extractor.c \
src/Launch.cpp \
src/List.cpp \
src/Listener.cpp \
src/Locale.c \
src/PerfSocket.cpp \
src/ReportCSV.c \
src/ReportDefault.c \
src/Reporter.c \
src/Server.cpp \
src/Settings.cpp \
src/SocketAddr.c \
src/main.cpp \
src/sockets.c \
src/stdio.c \
src/tcp_window_size.c \
src/gnu_getopt.c \
src/gnu_getopt_long.c \
src/service.c
LOCAL_C_INCLUDES += \
$(LOCAL_PATH) \
$(LOCAL_PATH)/include
LOCAL_CFLAGS += -O2
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_LDLIBS += -lpthread
LOCAL_SHARED_LIBRARIES := libc libm libcutils libnetutils
LOCAL_MODULE := iperf
#LOCAL_FORCE_STATIC_EXECUTABLE := true
#LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_MODULE_PATH := $(LOCAL_PATH)
#LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
#LOCAL_MODULE_TAGS := eng user
include $(BUILD_EXECUTABLE)
4.先生成需要的头文件
./configure --host=arm
5.修改源码中的头文件:
把 compact/signal.c 里面的 #include "util.h"
改成 #include “../include/util.h”
把 src/sockets.c 里面的 #include "util.h"
改成 #include “../include/util.h”
6.编译 $cd Adroid_root
$source . build/envsetup.sh
$mmm external/iperf-2.0.4
备注:在第六步,你可以学到如何在Android源码中单独编译某一个目录! 那就是 mmm 命令!
不知道你有没有发现在Android中当你编译完成后在每个源文件所在目录下根本看不到对应的 *.o 文件。是没有吗?是被删除了吗?当然不是!去这里看看你就知道了:/home/cpp/r7_new/out/target/product/***/obj/EXECUTABLES
编译iperf到centos7:
参考:https://blog.csdn.net/qq_39574546/article/details/83446014
wget https://iperf.fr/download/source/iperf-2.0.9-source.tar.gz
tar xzvf iperf-2.0.9-source.tar.gz
cd iperf-2.0.9/
./configure
make && make install
公司生产的设备使用的centos7系统,但是没有gcc,所以只能在以上的基础上进行修改。
先在centos编译机上下载源码、解压、配置、编译
将生成的iperf工具拷贝到设备上运行。