注:此文为ubuntu x86系统编译程序到xilinx aarch64系统中。
一、工具准备
- x86上编译aarch64的编译器
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu #保证编译器在环境变量中,尝试执行aarch64-linux-gnu-gcc
- 目标平台的根文件系统rootfs,如下
- 下载iperf源码:https://github.com/esnet/iperf
二、编译过程
- 配置变量
export CC=aarch64-linux-gnu-gcc export CXX=aarch64-linux-gnu-g++ export RD=aarch64-linux-gnu-ld export AR=aarch64-linux-gnu-ar export ANLIB=aarch64-linux-gnu-ranlib export TRIP=aarch64-linux-gnu-strip export SYSROOT="/home/edge/test/workspace/rootfs" #根文件系统所在目录 export LDFLAGS="--sysroot=$SYSROOT -L$SYSROOT/usr/lib -L$SYSROOT/lib" export CFLAGS="--sysroot=$SYSROOT -I$SYSROOT/usr/include" export CXXFLAGS="--sysroot=$SYSROOT -I$SYSROOT/usr/include" export LDFLAGS="--sysroot=$SYSROOT -L$SYSROOT/usr/lib -L$SYSROOT/lib"
- 进入iperf3所在目录,运行configure生成Makefile
./configure --host=aarch64-linux-gnu --prefix=/usr --with-sysroot=$SYSROOT
- 执行make生成可执行文件,执行make DESTDIR=$(pwd)/install install将
make
生成的二进制文件、库文件、头文件和配置文件复制到系统指定目录(此处为install文件夹中)。 - 将生成的可执行文件移动到目标机器中运行。
三、注意
- 如果运行时报错,缺少相应的库文件,需将库文件路径加入环境变量LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH=/soft/usr/lib:$LD_LIBRARY_PATH