1. 首先安装依赖环境libmnl:
需要交叉编译工具(此步骤按照你使用的arm板所提供的交叉编译工具,并不是完全一样)
mnl库的下载链接: https://www.netfilter.org/pub/libmnl/?C=N;O=A
.sig是签名文件,可以不用下载,直接下载biz文件然后解压即可
然后进行编译:
cd libmnl-1.0.5/
./configure --host=arm-linux CC=aarch64-linux-gnu-gcc --prefix= /home/grand/externalTools/arm-libmnl/libmnl LDFLAGS=-static
make
make install
CC后加自己使用的交叉编译工具,prefix后跟自己指定的下载,建议外部使用(交叉编译等)的工具与环境单独下载,不要与系统本身的环境混在一起。
然后在制定目录下即可看到生成的库文件
2. 下载ethtool:
链接https://git.kernel.org/pub/scm/network/ethtool/ethtool.git 源码中没有configure文件,需要依次执行:aclocal、autoconf、autoheader、automake --add-missing生成configure文件
或着直接sh autogen.sh生成configure文件
然后
./configure --prefix=/home/grand/externalTools/arm-ethtool --host=arm-linux CC=aarch64-linux-gnu-gcc MNL_CFLAGS="-I/home/grand/externalTools/arm-libmnl/libmnl/include" MNL_LIBS="-L/home/grand/externalTools/arm-libmnl/libmnl/lib -lmnl" LDFLAGS=-static
make
make install
需要额外指定环境所在目录与应用下载目录,然后实现安装。
问题出现的情况可能是:
- 交叉编译需要静态链接库 LDFLAGS指定静态编译,否则交叉编译工具无法找到
- 未找到交叉编译后的库文件 直接指定编译所需要的依赖库所在的目录即可
3. 移植
将生成的可执行程序放到arm的根目录 /bin 即可
|