だから私はこの問題を抱えています:私は私のCプログラムでいくつかのexternグローバル変数を宣言しています。gcc に -c オプションを使用しないと、未定義の参照エラーが発生します。しかし、その -c オプションでは、リンクは行われません。つまり、実行可能ファイルが生成されていません。
では、どうすればこれを解決できますか?
これが私のmakefileです(Alexに感謝して書かれました)
CC = gcc # compiler/linker frontend
INCL = -I$(INCL_DIR) # includes
DEFS = -D_DEBUG_ # defines
CFLAGS = -g $(INCL) $(DEFS) # compiler flags
LFLAGS = -lpthread -lm -g # linker flags
OBJ = approx.o producteur.o sequentialApproximation.o main.o
BIN = calculPi.exe
LINKOBJ = approx.o producteur.o sequentialApproximation.o main.o
RM = rm -fv
all: $(BIN)
clean:
${RM} *\~ \#*\# $(OBJ)
clean_all: clean
${RM} $(BIN)
cleanall: clean
${RM} $(BIN)
$(BIN): $(OBJ)
$(CC) $(LFLAGS) -o $@ $^
main.o: main.c
approx.o: approx.c approx.h
producteur.o: producteur.c producteur.h
sequentialApproximation.o : sequentialApproximation.c sequentialApproximation.h
.c.o:
$(CC) $(CFLAGS) -c $<
そして、これが make の出力です: http://pastebin.com/NzsFetrn
私は approx.h (extern および global) で extern 変数を宣言しましたが、approx.c でそれらを呼び出そうとしましたが、そこでは機能しません。