gpt4 book ai didi

c - 使用 Makefile 链接和编译

转载 作者:行者123 更新时间:2023-12-02 05:16:02 24 4
gpt4 key购买 nike

gcc 4.7.2
c89
GNU Make 3.82

我正在尝试使用这个 Makefile 编译这个程序。目前我只有 1 个 src 文件,但稍后我会包含更多文件。

我试图让 Makefile 创建 bin 目录(如果它不存在)并将二进制可执行文件放在那里。

INC_PATH=-I/home/dev_tools/apr/include/apr-1
LIB_PATH=-L/home/dev_tools/apr/lib
LIBS=-lapr-1
RUNTIME_PATH=/home/dev_tools/apr/lib
CC=gcc
CFLAGS=-Wall -Wextra -g -m32 -D_DEBUG -D_THREAD_SAFE -D_REENTRANT -D_LARGEFILE64_SOURCE -O2 $(INC_PATH)
OBJECTS=timeout.o
EXECUTABLE=bin/to

all: build $(EXECUTABLE)

$(EXECUTABLE):
$(CC) -m32 -o $@ -Wl,-rpath,$(RUNTIME_PATH), $(LIB_PATH) $(OBJECTS) $(LIBS)

build:
@mkdir -p bin

clean:
rm -rf *~ timeout *.o

我收到这个错误:

make
gcc -m32 -o bin/to -Wl,-rpath,/home/dev_tools/apr/lib, -L/home/dev_tools/apr/lib timeout.o -lapr-1
gcc: error: timeout.o: No such file or directory
make: *** [bin/to] Error 1

当我删除 $(OBJECTS) 时,我得到以下信息:

gcc -m32 -o bin/to -Wl,-rpath,/home/dev_tools/apr/lib, -L/home/dev_tools/apr/lib -lapr-1
/usr/bin/ld: cannot find : No such file or directory
collect2: error: ld returned 1 exit status
make: *** [bin/to] Error 1

不确定我哪里出错了。

最佳答案

您尚未指定如何构建目标 timeout.o。

您需要添加以下代码:

timeout.o: timeout.c
$(CC) $(CFLAGS) -c -o $@ $<

如果你最终得到更多需要编译的源文件,你可以使用这样的模式匹配规则:

%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@

关于c - 使用 Makefile 链接和编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14618572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com