【问题标题】:Makefile error in C with same function具有相同功能的 C 中的 Makefile 错误
【发布时间】:2016-12-24 19:09:09
【问题描述】:

我想在我从事套接字编程的项目中使用“Makefile”。我有两个简单的 .c 文件,但它们有自己的主要功能。由于这两个主要功能,makefile 会返回错误。

我在 server.c 文件中有一个 main 函数,在 client.c 中有一个 main 函数

错误

gcc server.o client.o -o output -lpthread client.o: 在函数中 main': client.c:(.text+0x0):main' için birden fazla tanım server.o:server.c:(.text+0x78): 类似 burada tanımlanmış collect2: 错误:ld 返回 1 退出状态 Makefile:4:目标配方 '输出'失败 make: *** [输出] 错误 1

制作文件

all: output

output: server.o client.o
    gcc server.o client.o -o output -lpthread

server.o: server.c
    gcc -c server.c

client.o: client.c
    gcc -c client.c

clean:
    rm *.o

谢谢:)

【问题讨论】:

    标签: c gcc makefile


    【解决方案1】:

    它不会那样工作。你需要两个输出,ala

    all: server client
    
    server: server.o
        gcc server.o -o server -lpthread
    
    client: client.o
        gcc client.o -o client -lpthread
    

    这是因为你的程序只能有一个main。您想将两个 .c 文件编译为一个可执行文件,您想做什么?

    【讨论】:

    • 它不起作用,对不起。错误缺少分隔符?
    • gcc 开头的行应该以制表符开头,而不是空格。我猜你可能已经用空格结束了。 :)
    • 非常感谢。是的,我忘记将它们从空格更改为制表符。问题解决了
    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 2018-03-03
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2020-01-30
    相关资源
    最近更新 更多