我在写一个内核模块,其中有3个源文件和一个头文件。当我编译它,它让我看到以下错误:错误:多重定义
/home/karan/project/proc.o: In function `proc_read':
/home/karan/project/proc.c:23: multiple definition of `info'
/home/karan/project/main.o:/home/karan/project/main.c:23: first defined here
/home/karan/project/tx_pkt.o: In function `tx_packet':
/home/karan/project/tx_pkt.c:9: multiple definition of `info'
/home/karan/project/main.o:/home/karan/project/main.c:23: first defined here
我认为这个问题是编译器正在定义struct info
更多然后一次。但是,解决方案是什么? struct info
在头文件中声明。头文件是如下:
int proc_write(struct file *filp,const char *buffer,unsigned long count,void *data);
int proc_read(char *buffer,char **buffer_location,off_t offset,int buffer_length,int *eof,void *data);
void tx_packet(void);
#ifndef MYDEFS_H
#define MYDEFS_H
struct inform
{
char tx_buffer[100];
struct iphdr *ip1;
};
extern struct inform info;
#endif
@phimuemue我解决了它实际上我正在写结构信息的对象....... 。 – karan421 2012-03-28 06:56:58
@torrential编码嗨,我解决了这个问题,通过把外部结构信息inf,但现在它给我下面的警告:警告:“信息”[/home/karan/project/generate.ko] undefined! – karan421 2012-03-28 07:02:25
@OliCharlesworth谢谢,你可能是对的。我意识到我们只是搬出了一些功能,没有任何结构。 – phimuemue 2012-03-28 07:02:40