编译模块时出错!大家来看看,怎么回事?
#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: *** 错误 1
make: *** 错误 2
make: *** 错误 2
# make modules_install
INSTALL arch/i386/crypto/aes-i586.ko
cp: stat‘arch/i386/crypto/aes-i586.ko’失败: 没有那个文件或目录
make: *** 错误 1
make: *** 错误 2
这是怎么回事啊?郁闷ing,bzImage通过,但编译模块时就这样,是不是有什么东西没有安装啊? make bzImage??????晕,你安装的是什么版本的内核啊 2.6.11.11
make bzImage时通过,
makemodules时发生以上错误 2.6以上版本的内核哪个需要make bzImage啊?看看前头那个帖子先,2.6.11内核编译 一样,只是这个分了几两次用而以
习惯了make bzImage
make modules
好像与I2C的有关的都会出现这个,取消哪个就行了,不过内核启动不了,郁闷 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
重新起动 这个问题是由于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.结构数组的定义类型的警告; 我把那个结构体的定义放到函数的前面去也可以.
把:
/*
* 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_ADDR0x2000
#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; 啊,对不起,我还以为是和我一样的错误.原来不是.
不过我想解决的方法也许可以差不多. 换新版本内核 :mrgreen:
页:
[1]