QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3053|回复: 9

编译模块时出错!大家来看看,怎么回事?

[复制链接]
发表于 2005-6-7 17:59:34 | 显示全部楼层 |阅读模式
#make modules最后出现下面几行:
In file included from drivers/i2c/i2c-core.c:29:
include/linux/i2c.h:58: 错误:数组元素的类型不完全
include/linux/i2c.h:197: 错误:数组元素的类型不完全
drivers/i2c/i2c-core.c: 在函数 ‘i2c_transfer’ 中:
drivers/i2c/i2c-core.c:594: 错误:实参 2 的类型不完全
drivers/i2c/i2c-core.c: 在函数 ‘i2c_master_send’ 中:
drivers/i2c/i2c-core.c:620: 错误:实参 2 的类型不完全
drivers/i2c/i2c-core.c: 在函数 ‘i2c_master_recv’ 中:
drivers/i2c/i2c-core.c:649: 错误:实参 2 的类型不完全
make[2]: *** [drivers/i2c/i2c-core.o] 错误 1
make[1]: *** [drivers/i2c] 错误 2
make: *** [drivers] 错误 2
[root@hegang linux-2.6.11.11]# make modules_install
  INSTALL arch/i386/crypto/aes-i586.ko
cp: stat‘arch/i386/crypto/aes-i586.ko’失败: 没有那个文件或目录
make[1]: *** [arch/i386/crypto/aes-i586.ko] 错误 1
make: *** [_modinst_] 错误 2
这是怎么回事啊?郁闷ing,bzImage通过,但编译模块时就这样,是不是有什么东西没有安装啊?
发表于 2005-6-7 19:52:03 | 显示全部楼层
make bzImage??????晕,你安装的是什么版本的内核啊
回复

使用道具 举报

 楼主| 发表于 2005-6-7 20:58:15 | 显示全部楼层
2.6.11.11
make bzImage时通过,
make  modules时发生以上错误
回复

使用道具 举报

发表于 2005-6-8 20:08:05 | 显示全部楼层
2.6以上版本的内核哪个需要make bzImage啊?看看前头那个帖子先,2.6.11内核编译
回复

使用道具 举报

 楼主| 发表于 2005-6-10 15:19:51 | 显示全部楼层
一样,只是这个分了几两次用而以
习惯了make bzImage
make modules
好像与I2C的有关的都会出现这个,取消哪个就行了,不过内核启动不了,郁闷
回复

使用道具 举报

发表于 2005-6-15 07:54:17 | 显示全部楼层
I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For linux,该项必选。

  Video For linux:支持有关的音频/视频卡。


内核编译简单如下

1、下载linux-2.6.11.11.tar.gz到 /usr/src/
2、
#cd /usr/src
#tar xzvf linux-2.6.11.11.tar.gz
#cd linux-2.6.11.11
#ln -sf /boot/config-2.6.9 /usr/src/linux-2.6.11.11/.config (网友 demonlj)
#make mrproper

该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚 下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编 译内核,那么最好要先运行一下这个命令。

#make menuconfig
...............
#make && make modules_install && make install (网友 demonlj)

#init 6

重新起动
回复

使用道具 举报

发表于 2005-6-18 14:45:55 | 显示全部楼层
这个问题是由于gcc的版本是4.0造成的.
解决方法:
编辑include/linux/i2c.h的58和197行,将如下内容,
        struct i2c_msg msg[]
改成
        struct i2c_msg *msg
然后再次运行make modules.

根据你的内核配置,你可能还会遇到类似的问题,我在FC4上编译linux-2.6.11.12的模块时,在bttv.h和bttv-driver.c遇到同样的问题.

总的说来,gcc4对语法的检查更加严格了.我在FC4遇到的问题有:
    1.  指针的强制转换类型的警告;
    2.  结构数组的定义类型的警告;
回复

使用道具 举报

发表于 2006-8-7 18:06:39 | 显示全部楼层
我把那个结构体的定义放到函数的前面去也可以.

把:
/*
* I2C Message - used for pure i2c transaction, also from /dev interface
*/
struct i2c_msg {
    __u16 addr; /* slave address            */
    __u16 flags;
#define I2C_M_TEN   0x10    /* we have a ten bit chip address   */
#define I2C_M_RD    0x01
#define I2C_M_NOSTART   0x4000
#define I2C_M_REV_DIR_ADDR  0x2000
#define I2C_M_IGNORE_NAK    0x1000
#define I2C_M_NO_RD_ACK     0x0800
    __u16 len;      /* msg length               */
    __u8 *buf;      /* pointer to msg data          */
};


放到这个的后面,后面
/* --- General options ------------------------------------------------ */

struct i2c_msg;
struct i2c_algorithm;
struct i2c_adapter;
struct i2c_client;
struct i2c_driver;
struct i2c_client_address_data;
union i2c_smbus_data;
回复

使用道具 举报

发表于 2006-8-7 18:11:09 | 显示全部楼层
啊,对不起,我还以为是和我一样的错误.原来不是.
不过我想解决的方法也许可以差不多.
回复

使用道具 举报

发表于 2006-8-8 21:48:22 | 显示全部楼层
换新版本内核
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-23 19:50 , Processed in 0.075219 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表