我即将在 ARM 板 SabreLite 上实现 AODV,但遇到了一些问题。
因此,我使用位于此处 (sourceforge.net/projects/aodvuu/) 的最新版本的 AODV。我已经按照自述文件中给出的说明进行操作,但最后,我得到了错误:
kaodv-mod.c:22:27: 致命错误: linux/version.h: 没有这样的文件或目录#include
由于开发板使用的是 3.0.35 内核版本,所以我下载了它,我只是更改了 Makefile 中的内核目录。而且,它通常应该根据说明(http://w3.antd.nist.gov/wctg/aodv_kernel/kaodv_arm.html)工作。上面的错误表明我没有 version.h 但我检查了并且我安装了所有的 linux 头文件,所以不能这样。
在本教程的第 6 步(README 文件)中,我没有编译内核 3.0.35,因为我非常肯定它对 AODV-UU 具有适当的 netfilter 支持,因为它是内核年轻版本。(这实际上是内核 2.4 和 2.6 的配置建议,但我认为我不应该在这里这样做)
- 有什么办法可以解决这个问题?
- 在继续之前我真的需要编译这个内核版本(3.0.35)吗?
- 我是否必须更改 AODV 代码,如果需要,我必须修改哪些文件?
提前致谢 !!!
感谢您的回复,但不幸的是,我已经这样做了。这么说,我的意思是,我选择了与目标内核匹配的内核源代码树(linux-imx6-boundary-imx_3.0.35_4.1.0)。我还设置了我的交叉编译器,让我的环境变量为交叉编译做好准备。这是输出。
echo $CC:
arm-oe-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi
我的一些环境变量看起来像这样:
ARCH=arm
CROSS_COMPILE=arm-oe-linux-gnueabi-
CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types
RANLIB=arm-oe-linux-gnueabi-ranlib
之后,所有这些配置,我仍然得到错误。我真的不认为我必须重新编译内核