makefile中main函数的多重定义

时间:2015-03-26 14:19:38

标签: makefile main

我写了这个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文件有什么问题?

2 个答案:

答案 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变量,但这不是主要问题。)