背景
由于工作中需要了解Linux的驱动模块,所以就开始学习,初看Linux驱动编程,跟着博客写一个块设备驱动学习,练习环境为centos6.5 gcc版本为6.3。
遇到的问题
跟着敲完那个简单的驱动程序后,发现编译出错,错误信息为
include/linux/compiler-gcc.h:89:30: fatal error: linux/compiler-gcc6.h: No such file or directory
一通百度,说gcc版本太高,去下载一个compiler-gcc6.h文件,放到内核源码文件夹里面,按着做了,结果编译又出问题了,错误信息为
include/linux/compiler.h:163:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static __always_inline void data_access_exceeds_word_size(void)
include/linux/compiler.h:169:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static __always_inline void data_access_exceeds_word_size(void)
include/linux/compiler.h:173:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static __always_inline void __read_once_size(volatile void *p, void *res, int size)
include/linux/compiler.h:190:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static __always_inline void __write_once_size(volatile void *p, void *res, int size)
解决方法
又是一通百度,发现跟我情况不符,看了下博客发表时间,08年,果断换了一个centos6.0的机器,gcc版本为4.6,编译完美通过,环境因素很重要啊。。。