0

我正在编写一个内核模块,其中有 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
4

2 回答 2

4

用途:头卫

在您的标题中执行以下操作:

#ifndef MYDEFS_H
#define MYDEFS_H

struct info {
    ...
    ...
};

#endif
于 2012-03-28T06:47:05.650 回答
-1

我认为您在 ($(USERAPPS): $(USERSP) $(CC) -o $@ ) 中添加了主 .c 文件,U 包括除主文件之外的所有 c 文件

于 2013-06-04T13:59:11.707 回答