linux has no member named 编译出错,Linux 内核变更导致驱动经常出现的错误记录

  • Post author:
  • Post category:linux


Linux 内核变更导致驱动经常出现的错误记录

1: error: CFLAGS was changed in xxx. Fix it to use ccflags-y。

解决方法: export KBUILD_NOPEDANTIC=1

解决方法: 修改Makefile中的 CFLAGS 为 EXTRA_CFLAGS 或 ccflags-y

2: linux/config.h no found file or folder

解决方法: #include 头文件貌似在2.6.19的内核版本后就没有了, 有此错误的话, 则删除此文件.

3: error: unknown field ‘ioctl’ specified in initializer

解决方法: 所有file_operations结构体中的ioctl函数指针。改为unlocked_ioctl。

4: error: implicit declaration of function ‘init_MUTEX’

解决方法: 2.6.25以后就已经不再使用这个宏了。可以自己手动添加此宏.

#define init_MUTEX(sem) sema_init(sem, 1)

#define init_MUTEX_LOCKED(sem) sema_init(sem, 0)

5: error: ‘TASK_INTERRUPTIBLE’ undeclared

解决方法: 添加 #include 6: error: current->uid

解决方法: 变更为 current->cred->uid.val;

typedef struct {

uid_t val;

} kuid_t;

kuid_t uid;

struct cred {

……..