これが私の defs.h の構造です。
#ifndef DEF_H
#define DEF_H
#include <stdio.h>
...
int var = 20;
int test = 1;
...
#endif
今、main.c と util.c があり、すべて次のようになっています。
#include "defs.h"
これは私のメイクファイルです:
all: clean compile
compile: clean main
@echo SUCCESS: COMPILED FILES
main: main.o util.o
cc main.o util.o -o progname
main.o: main.c
cc -o main.o -c main.c
util.o: util.c
cc -o util.o -c util.c
clean:
-rm -rf *.a *.o *.so progname
@echo SUCCESS: CLEANED FILES
ただし、make を実行すると、両方のオブジェクト ファイルが正常にコンパイルされますが、最終的なリンクを実行すると、次のようになります。
util.o:(.data+0x0): multiple definition of `var'
main.o:(.data+0x0): first defined here
私は何か間違った構造をしていますか?どんな助けでも大歓迎です。
ありがとう