【发布时间】:2021-05-25 15:00:03
【问题描述】:
我想在 lib 中创建一个库文件,在 bin 目录中创建一个输出文件。 但是我的 makefile 不起作用。
我的目录树
~/home$ 树
.
├── bin
├── include
│ └── myhead.h
├── lib
├── libsrc
│ └── myfunc.c
└── src
├── Makefile
└── main.c
这是我的生成文件
.SUFFIXES = .c .o
.c.o :
$(CC) $(INC) $(CFLAGS) $<
CC = gcc
CFLAGS = -g -c
AR = ar
OBJECTS = main.o
SRCS = main.c
LIB_TARGET = ../lib/libmyfunc.a
LIB_OBJS = ../libsrc/myfunc.o
LIB_SRCS = ../libsrc/myfunc.c
LIBS = -lmyfunc
LIB_DIR = -L../lib
$(LIB_TARGET) : $(LIB_OBJS)
$(AR) -rcv $(LIB_TARGET) $(LIB_OBJS)
INC = -I../include
TARGET = ../bin/main
$(TARGET) : $(OBJECTS)
$(CC) -o $(TARGET) $(OBJECTS) $(LIB_DIR) $(LIBS)
clean :
rm -rf $(OBJECTS) $(TARGET) core
我认为它有效,但它不起作用。 我得到一个 ar: ../libsrc/myfunc.o: No such file or directory 错误 以及在 src 目录中创建的 myfunc.o 文件。
我想得到类似的文件
.
├── bin
│ └── main.out <-- new
├── include
│ └── myhead.h
├── lib
│ └── libmyfunc.a <-- new
├── libsrc
│ └── myfunc.c
│ └── myfunc.o <-- new
└── src
├── Makefile
└── main.c
编辑:
我的构建日志
~/home/src$ make
gcc -I../include -g -c ../libsrc/myfunc.c
ar -rcv ../lib/libmyfunc.a ../libsrc/myfunc.o
ar: ../libsrc/myfunc.o: No such file or directory
make: *** [Makefile:20: ../lib/libmyfunc.a] Error 1
建造后的树
~/home$ 树
.
├── bin
├── include
│ └── myhead.h
├── lib
├── libsrc
│ └── myfunc.c
└── src
├── Makefile
├── main.c
└── myfunc.o
谁能帮忙?
【问题讨论】:
-
你能描述一下实际的问题吗?什么不工作?你有错误吗?
-
最简单的方法是:改用cmake。它是为人类设计的。
-
“不起作用”从来都不是一个好的问题描述。请提供预期结果与实际结果。同时提供完整的构建日志。
-
我在我的 makefile 中设置了归档文件的目标文件的路径,但我得到一个 ar: ../libsrc/myfunc.o: No such file or directory error and myfunc object file created in src directory .
-
重复:显示您的构建日志。还可以在构建后显示您的实际目录树。