gpt4 book ai didi

c - 为 ARM 编译 Kernel-aodv 时出错

转载 作者:行者123 更新时间:2023-11-30 15:31:04 29 4
gpt4 key购买 nike

我即将在 ARM 板 SabreLite 上实现 AODV,但遇到了一些问题。

因此,我使用位于此处的最新版本的 AODV (sourceforge.net/projects/aodvuu/)。我已按照自述文件中给出的说明进行操作,但最后出现错误:

kaodv-mod.c:22:27: fatal error : linux/version.h: 没有这样的文件或目录 #包括

由于板子使用3.0.35内核版本,所以我下载了它,然后更改了Makefile中的内核目录。并且,它通常应该根据指令( http://w3.antd.nist.gov/wctg/aodv_kernel/kaodv_arm.html )工作。上面的错误表明我没有 version.h,但我检查过并且安装了所有 linux 头文件,所以不可能是这样。

在教程(自述文件)的第 6 步中,我没有编译内核 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

完成所有这些配置后,我仍然收到错误。我真的不认为我必须重新编译内核

最佳答案

为了构建模块,您需要一个处于与目标内核匹配的状态的内核源代码树,即不是未经修改的新下载的内核源代码树。不要混淆额外的特定于板的补丁/驱动程序/等的存在。在供应商内核中进行配置 - 要使源代码树进入正确的使用状态,您仍然需要:

  • 正确配置:make ARCH=arm <whatever>_defconfig (和/或任何 .config 调整您的主板需求)
  • 然后构建它:make ARCH=arm CROSS_COMPILE=<your toolchain triplet>

您需要实际构建内核,因为有许多重要文件还不存在,例如 include/generated 的内容(其中创建了前面提到的version.h),对应的arch/$ARCH/include/generated 、模块版本控制的校验和,可能还有更多,这些都将根据选择的架构和特定配置选项而有所不同。

<小时/>

我很遗憾错过了问题中关键细节的提及,但是在下载链接的 AODV 并亲自尝试后,情况变得很清楚:makefile 是为 2.4 构建系统设计的,这是相当不同的(并且我是不熟悉)。要针对 2.6 后的内核构建该内核将需要 writing a new makefile .

关于c - 为 ARM 编译 Kernel-aodv 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144573/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com