我在raspbian(内核3.2.0-4-rpi)下使用compilation dvd ezmaker 7驱动程序不成功,虽然它在同一个Debian(内核3.2.0-4-686-pae)下成功编译 . 所以,我在Raspbian上完成了以下步骤:

  • 安装3.2.0-4内核(aptitude install linux-image-3.2.0-4.rpi)

  • 安装3.2.0-4头文件(aptitude install linux-headers-3.2.0-4.rpi)

  • 安装linux源码(linux-source-3.2 - 编译时需要一些dvb-core头文件)

  • 下载驱动程序源(v.1.0.28)

并尝试编译(使用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定义)

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下编译没有问题) .