我正在学习编写Linux内核模块并遵循Linux设备驱动程序一书。它指示构建和配置2.6.x的内核。我使用的是内核版本2.6.10。我按照thegeekstuff.com/compile-linux-kernel上的步骤进行操作 即我在/ usr / src目录中解压后,我做了
$ make menuconfig #this opened up a gui
然后我保存配置而不做任何更改,希望强制执行默认配置然后
$ make.
当我做的时候,它给了我这个错误和警告'
include / asm / mpspec_def.h:78:2:警告:字段忽略'packed'属性
'unsigned char [6]'[-Wattributes]
arch / i386 / kernel / process.c:在函数'show_regs'中:
arch / i386 / kernel / process.c:259:2:警告:传递参数2的'show_trace'中的指针目标在签名方面有所不同[-Wpointer-sign] include / asm / processor.h:499:6:注意:预期'long unsigned int *'但参数类型为'long int *
arch / i386 / kernel / process.c:汇编程序消息:
arch / i386 / kernel / process.c:384:错误:mov'
arch/i386/kernel/process.c:385: Error: operand type mismatch for
mov'的操作数类型不匹配
arch / i386 / kernel / process.c:461:错误:'mov'
include / linux / elfcore.h:92:错误:mov'
include/linux/elfcore.h:92: Error: operand type mismatch for
mov'的操作数类型不匹配
arch / i386 / kernel / process.c:583:错误:mov'
arch/i386/kernel/process.c:584: Error: operand type mismatch for
mov'的操作数类型不匹配
arch / i386 / kernel / process.c:591:错误:mov'
arch/i386/kernel/process.c:592: Error: operand type mismatch for
mov'的操作数类型不匹配
make 1:[arch / i386 / kernel / process.o]错误1
make:[arch / i386 / kernel]错误2
我之前没有写过专业的内核代码所以我不确定是否应该对代码进行任何更改。任何人都可以帮助我解决为什么会发生此错误以及如何删除它。我使用了默认的内核配置。在使用make menu-config调用make之前。
process.c中的错误在savesegment中(fs,p-> thread.fs); (错误的所有实例都来自同一个函数)
由于
答案 0 :(得分:0)
您的问题并不清楚您采取的具体步骤是什么。
此错误可能是由于配置中的一些问题造成的。
请尝试以下步骤,看看它是否解决了问题:
> make defconfig #Creates a default config based on your machine architecture
> make
答案 1 :(得分:0)
我使用的是内核版本,其版本更接近我的原生内核版本~3.11.1。并使用make oldconfig代替。这比计算我的架构的每个配置设置更容易。