新机器可能很多环境都没有安装,需要将环境初始化好
像gcc,make等,
在最开始是configure总是失败,查找config.log可以看到问题
安装缺少的包,搜索一下:yum search libelf-dev,可以看到相应的包 elfutils-libelf-devel.x86_64,
安装之后,重新configure,即可
centos安装netmap相对来说比较简单。
1. 主要第一步安装kernel-devel
从光盘安装kernel-devel包,默认安装即可,安装完毕应该在/usr/src/kernel/...
2、下载netmap
git clone https://github.com/luigirizzo/netmap.git
======================================问题描述开始=======================
3. make,make install
但是现在centos最新版是centos8.2,安装netmap会报错误,使用wiki方法指定网卡驱动版本,还是不行,
指定网卡驱动版本方法:
./configure --prefix=/usr/local/src/buildnetmap --kernel-sources=/usr/src/kernels/4.18.0-193.el8.x86_64 --kernel-dir=/usr/src/kernels/4.18.0-193.el8.x86_64 --driver-suffix=-netmap --select-version=e1000e:3.8.4 --drivers=e1000e
看出问题的报错信息像是版本不兼容问题:出错信息:
/usr/local/src/netmap/netmap-tmpdir/__test__11.c:15:23: 附注:(在‘ndo.ndo_select_queue’的初始化附近)
cc1:所有的警告都被当作是错误
make[2]: *** [scripts/Makefile.build:318:/usr/local/src/netmap/netmap-tmpdir/__test__11.o] 错误 1
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__10.o
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__8.o
/usr/local/src/netmap/netmap-tmpdir/__test__8.c: 在函数‘dummy’中:
/usr/local/src/netmap/netmap-tmpdir/__test__8.c:8:20: 错误:提供给函数‘ndo->ndo_select_queue’的实参太少
return ndo->ndo_select_queue(NULL, NULL, NULL);
^~~
/usr/local/src/netmap/netmap-tmpdir/__test__8.c:9:5: 错误:在有返回值的函数中,控制流程到达函数尾 [-Werror=return-type]
}
^
cc1:所有的警告都被当作是错误
make[2]: *** [scripts/Makefile.build:318:/usr/local/src/netmap/netmap-tmpdir/__test__8.o] 错误 1
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__9.o
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__7.o
/usr/local/src/netmap/netmap-tmpdir/__test__7.c: 在函数‘dummy’中:
/usr/local/src/netmap/netmap-tmpdir/__test__7.c:8:20: 错误:提供给函数‘ndo->ndo_select_queue’的实参太少
return ndo->ndo_select_queue(NULL, NULL);
^~~
/usr/local/src/netmap/netmap-tmpdir/__test__7.c:9:5: 错误:在有返回值的函数中,控制流程到达函数尾 [-Werror=return-type]
}
^
cc1:所有的警告都被当作是错误
make[2]: *** [scripts/Makefile.build:319:/usr/local/src/netmap/netmap-tmpdir/__test__7.o] 错误 1
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__6.o
/usr/local/src/netmap/netmap-tmpdir/__test__6.c: 在函数‘dummy’中:
/usr/local/src/netmap/netmap-tmpdir/__test__6.c:9:3: 错误:implicit declaration of function ‘kthread_use_mm’; did you mean ‘kthread_parkme’? [-Werror=implicit-function-declaration]
kthread_use_mm(mm);
^~~~~~~~~~~~~~
kthread_parkme
cc1:所有的警告都被当作是错误
make[2]: *** [scripts/Makefile.build:319:/usr/local/src/netmap/netmap-tmpdir/__test__6.o] 错误 1
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__3.o
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__2.o
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__5.o
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__4.o
CC [M] /usr/local/src/netmap/netmap-tmpdir/__test__1.o
/usr/local/src/netmap/netmap-tmpdir/__test__1.c: 在函数‘dummy’中:
/usr/local/src/netmap/netmap-tmpdir/__test__1.c:8:15: 错误:‘struct net_device’ has no member named ‘ax25_ptr’; did you mean ‘tipc_ptr’?
return dev->ax25_ptr;
^~~~~~~~
tipc_ptr
/usr/local/src/netmap/netmap-tmpdir/__test__1.c:9:2: 错误:在有返回值的函数中,控制流程到达函数尾 [-Werror=return-type]
}
^
cc1:所有的警告都被当作是错误
make[2]: *** [scripts/Makefile.build:318:/usr/local/src/netmap/netmap-tmpdir/__test__1.o] 错误 1
make[2]: 由于错误目标“__build”并未重新制作。
make[1]: *** [Makefile:1542:_module_/usr/local/src/netmap/netmap-tmpdir] 错误 2
make[1]: 由于错误目标“_all”并未重新制作。
make: *** [Makefile:12:tests] 错误 2
make: 由于错误目标“all”并未重新制作。
********************************** WARNING **********************************
*** There were problems building the external driver e1000e.
***
*** Please note that this is not related to the netmap patches,
*** that were not applied.
***
*** Disabling e1000e.
*****************************************************************************
======================================问题描述结束=======================
更换centos7 实验一下,实验中。。。。。问题终于解决。原来是路走偏了。如上图所出的错误是测试例子出的,按理说也不行。事实是configure只要生成makefile即可。
然后make、makeinstall生成netmap.ko文件。
安装netmap最好升级下内核:
yum -y update