【问题标题】:Makefile compilationMakefile 编译
【发布时间】:2016-08-08 07:07:22
【问题描述】:

我必须编译一个client.c文件;在这个文件中,utiliy_lib.h 中定义了宏

当我跑步时:

gcc -Wall -c client.c utility_lib.h

编译器找不到宏定义。

我在同一个文件夹“code”中有这个文件:

client.c

服务器.c

utility_lib.c //它包含每个文件使用的通用宏

utility.c //它包含工具函数,供客户端和服务器使用

msg_queue.c // 它包含操作消息队列的函数(这是一个聊天室的小项目)

send_receive.c //它包含发送和接收消息的函数

我尝试的makefile是:

CC = gcc -Wall -O0 -g
LDFLAGS = -lpthread
ARCH = $(shell uname -m)

all: client server

server: common.h main.c msg_queue.c send_recv.c util.c
rm -f build/*.o

    $(CC) -c main.c -o build/main.o
    $(CC) -c send_recv.c -o build/send_recv.o
    $(CC) -c util.c -o build/util.o
    $(CC) -c msg_queue.c -o build/msg_queue.o
    $(CC) -o server build/*.o $(LDFLAGS)

client:
    ln -s -f client-$(ARCH) client

:phony
clean:
    rm -f client server build/*.o

有人可以帮帮我吗?

【问题讨论】:

  • 这与 makefile 有什么关系?另外,发布一些代码,问题可能出在您的代码中。
  • make 的问题在哪里??检查你的代码
  • #include "utility_lib.h" 在 c 文件中并使用 -IPATH_OF_HEADER
  • 在client.c中我显然有#include "utility_lib.h";我只发布了客户端行,因为它还包括服务器等其他行
  • CC= gcc -Wall LDFAGS= -lpthread 客户端:client.c utility_lib.h $(CC) client.c $(LDFLAGS)

标签: c makefile


【解决方案1】:

Client.C 需要

#include "utility_lib.h"

文件顶部附近

这给了它定义

然后编译就是

gcc -Wall -c client.c 

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多