3 つのソース ファイルと 1 つのヘッダー ファイルを含むカーネル モジュールを作成しています。コンパイルすると、次のエラーが表示されます。
/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