一、准备工作
- 源代码git仓库地址
# ethtool依赖libmul
git clone git://git.netfilter.org/libmnl
# ethtool源码
git clone git://git.kernel.org/pub/scm/network/ethtool/ethtool.git
- 交叉编译工具链
安装需要的交叉编译链工具。这个需要根据自己的开发环境自行解决。
- 配置编译环境
# 如果编译工具链目录已经在PATH下,跳过此步骤
export PATH=/.../gcc-linaro-arm-linux-gnueabihf-4.8/bin/:$PATH
二、编译libmnl
ethtool
依赖于 libmnl
库,因此先对 libmnl
库进行交叉编译与静态链接。
# 自动配置编译环境,生成makefile等文件
$ ./configure --host=arm-linux CC=arm-hisiv400-linux-gcc LDFLAGS=-static --prefix=$PWD
# 若之前编译过,先清除之前的编译结果
make clean
# 编译
$ make
编译完成后,目标文件会保存在当项目根目录下的include
与lib
目录中
三、编译ethtool
# 创建编译所需配置文件
$ ./autogen.sh
# 自动配置编译环境,生成makefile等文件,将$LIBMNL_PWD替换为libmnl项目根目录,如:/opt/libmnl
$ ./configure --prefix=$PWD --host=arm-linux CC=arm-hisiv400-linux-gcc MNL_CFLAGS="-I$LIBMNL_PWD/include" MNL_LIBS="-L$LIBMNL_PWD/lib -lmnl" LDFLAGS=-static
# 若之前编译过,先清除之前的编译结果
$ make clean
# 编译目标文件
$ make
四、编译结果
编译完成后,在ethtool
根目录生成名为ethtool
的目标文件
$ ll ethtool
-rwxrwxr-x 1 aoniu aoniu 4432456 3月 31 09:52 ethtool
$ ls
aclocal.m4 depcomp ibm_emac.o Makefile.am sfpdiag.o
amd8111e.c dsa.c igb.c Makefile.in sfpid.c
amd8111e.o dsa.o igb.o marvell.c sfpid.o
at76c50x-usb.c e1000.c igc.c marvell.o shell-completion
at76c50x-usb.o e1000.o igc.o missing smsc911x.c
AUTHORS e100.c INSTALL natsemi.c smsc911x.o
autogen.sh e100.o install-sh natsemi.o stamp-h1
autom4te.cache et131x.c internal.h netlink stmmac.c
......
标签:ethtool,git,交叉,编译,libmnl,linux,arm
From: https://www.cnblogs.com/nazhen/p/16800427.html