关于C语言全局变量问题?

C语言萌新,全局变量中通过a.c定义一个变量int a=4,在b.h文件中extern int a;全局变量,最后在main.c中输出a=4,软件为devc++ 5.11.但是编译时报错了

img

img

img

img

而且目标文件中没有a.o,b.o文件生成,只有main.o文件,Makefile中也没有关于a.o,b.o的相关配置。

Makefile代码

# Makefile created by Dev-C++ 5.11
 
CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o
LINKOBJ  = main.o
LIBS     = -L"D:/Dev-Cpp/MinGW64/lib" -L"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib"
INCS     = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN      = 项目2.exe
CXXFLAGS = $(CXXINCS) -lwsock32
CFLAGS   = $(INCS) -lwsock32
RM       = rm.exe -f
 
.PHONY: all all-before all-after clean clean-custom
 
all: all-before $(BIN) all-after
 
clean: clean-custom
    ${RM} $(OBJ) $(BIN)
 
$(BIN): $(OBJ)
    $(CC) $(LINKOBJ) -o $(BIN) $(LIBS)
 
main.o: main.c
    $(CC) -c main.c -o main.o $(CFLAGS)

而同代码可执行代码为

# Makefile created by Dev-C++ 5.11
 
CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o a.o b.o
LINKOBJ  = main.o a.o b.o
LIBS     = -L"D:/Dev-Cpp/MinGW64/lib" -L"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib"
INCS     = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN      = 项目4.exe
CXXFLAGS = $(CXXINCS) -lwsock32
CFLAGS   = $(INCS) -lwsock32
RM       = rm.exe -f
 
.PHONY: all all-before all-after clean clean-custom
 
all: all-before $(BIN) all-after
 
clean: clean-custom
    ${RM} $(OBJ) $(BIN)
 
$(BIN): $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
 
main.o: main.cpp
    $(CPP) -c main.cpp -o main.o $(CXXFLAGS)
 
a.o: a.c
    $(CPP) -c a.c -o a.o $(CXXFLAGS)
 
b.o: b.c
    $(CPP) -c b.c -o b.o $(CXXFLAGS)

main.c文件中大部分代码为自动生成。printf,incude""是自己写的。跪求解决方法

img
项目里并没有b.c这个文件,只有b.h,Makefile代码写错了。