【问题标题】:How can i create makefile for gcc on a server-client program? [closed]如何在服务器客户端程序上为 gcc 创建 makefile? [关闭]
【发布时间】:2018-06-24 00:09:36
【问题描述】:

有 3 个文件:“client.c”、“server.c”和“util.h”

我需要在 linux 上使用 gcc 编译它并有 2 个可执行文件,1 个用于客户端,另一个用于服务器。 但是可能有超过 1 个客户端在运行而只有 1 个服务器。 我不知道该怎么做,只为客户端创建 1 个 makefile,为服务器创建另一个,或者只为 1 个,它可以工作吗?

【问题讨论】:

  • 创建多个目标client: client.c util.hserver: server.c util.h,然后是all: client server。如果你重写你的问题也会有所帮助,因为它现在还不是很容易理解。
  • 您创建了一个 Makefile 和一个 source code editor 理解选项卡。我更喜欢GNU emacs。您的问题与 SO 无关。您在终端中运行程序(或通过gdb 调试器),您可能会打开多个终端窗口。见this exampleMakefile

标签: c linux makefile


【解决方案1】:

只有一个 Makefile 需要创建:

TARGET=client server 
normal: $(TARGET)
client: client.c
    gcc -Wall client.c -o client
server: server.c
    gcc -Wall server.c -o server
clean:
    $(RM) $(TARGET) 

它将创建 2 个可执行文件(服务器和客户端)来运行。与一个/多个客户端同时执行一次服务器。

[编辑] 有人建议我改进解决方案:

TARGET=client server 
CC=gcc
CFLAGS= -Wall -Wextra -g
normal: $(TARGET)
client: client.c
    $(CC) $(CFLAGS) client.c -o client
server: server.c
    $(CC) $(CFLAGS) server.c -o server
clean:
    $(RM) $(TARGET)

【讨论】:

  • 我推荐CC=gccCFLAGS= -Wall -Wextra -g
  • 也可以为目标文件添加对 util.h 的依赖。
  • 只有 1 个问题:如果我需要使用“-pthread”等其他标志编译程序,我应该在 $(CC) $(CFFLAGS) ... client -pthread 之后添加它吗?谢谢你提前
  • 否则,将其添加到第三行,如下所示 CFLAGS= -pthread -Wall -Wextra -g
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多