我在raspbian(内核3.2.0-4-rpi)下编译dvd ezmaker 7驱动程序不成功,虽然它在同一个Debian(内核3.2.0-4-686-pae)下成功编译。所以,我在Raspbian上完成了以下步骤:
并尝试编译(使用make命令)它没有任何成功:gcc说“cx231xx-i2c:错误:隐式声明函数'i2c_master_recv'”(和“i2c_add_adapter”和“i2c_del_adapter”相同)。
但是,所有这些函数都在/lib/modules/3.2.0-4-rpi/source/include/linux/i2c.h中定义:
extern int i2c_master_recv (const struct i2c_client *client, char *buf, int count);
extern int i2c_add_adapter (struct i2c_adapter *);
extern int i2c_del_adapter (struct i2c_adapter *);
并且cx231xx-i2c.c文件中有#include指令。
问题i2c_del_adapter用法例如:
cx231xx-i2c.c
int cx231xx_i2c_unregister(struct cx231xx_i2c *bus)
{
i2c_del_adapter(&bus->i2c_adap);
return 0;
}
和cx231xx.h(struct cx231xx_i2c definition)
struct cx231xx_i2c {
struct cx231xx *dev;
int nr;
/* i2c i/o */
struct i2c_adapter i2c_adap;
struct i2c_algo_bit_data i2c_algo;
struct i2c_client i2c_client;
u32 i2c_rc;
/* different settings for each bus */
u8 i2c_period;
u8 i2c_nostop;
u8 i2c_reserve;
};
我对C和gcc并不熟悉,也无法理解为什么gcc认为这些函数是未定义的(此外,在Debian下编译没有问题)。