我写了这个make文件,当我尝试执行它时,gcc编译器发生错误
cc=gcc
CFLAGS=-I
LDLIBS=-lpthread
OBJECTS= MP.o serial.o MT.o
program:$(OBJECTS)
$(cc) $(CFLAGS) $(OBJECTS) $(LDLIBS) -o program
这是错误消息
gcc -I MP.o serial.o MT.o -lpthread -o program
MT.o: In function `main':
MT.c:(.text+0x2bf): multiple definition of `main'
serial.o:serial.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
make: *** [program] Error 1
我确信3个文件中没有错误 谁能告诉我make文件有什么问题?
答案 0 :(得分:1)
也许您在MT.c和serial.c中都声明了main方法。 主要方法(入口点)只应声明一次。
答案 1 :(得分:1)
有谁能告诉我make文件有什么问题?
错误不在makefile中,请阅读链接器错误:
MT.c:(.text+0x2bf): multiple definition of `main'
serial.o:serial.c:(.text+0x0): first defined here
它告诉您main
已定义两次,先是serial.c
,然后是MT.c
问题在于你的程序,而不是makefile。
(你也有一个没有路径的CFLAGS变量,但这不是主要问题。)