【发布时间】:2015-07-17 10:35:14
【问题描述】:
我有 2 个项目。
第一个有 4 个文件:
1. main.c(包括 PNM.h)
2. PNM.c(包括 PNM.h)
3. PNM.h
4. 生成文件
CC=gcc
LD=gcc
CFLAGS=--std=c99 -Wall -W -Wmissing-prototypes
LDFLAGS=
DOXYGEN=doxygen
RM=rm
AR=ar
RANLIB=ranlib
all: pnm
lib: PNM.o
@$(AR) ru libpnm.a PNM.o
@$(RANLIB) libpnm.a
pnm: main.o PNM.o
@$(LD) -o $@ $^ $(LDFLAGS)
main.o: main.c PNM.h
@$(CC) -o $@ -c main.c $(CFLAGS)
PNM.o: PNM.c PNM.h
@$(CC) -o $@ -c PNM.c $(CFLAGS)
clean:
@$(RM) -rf *.o
allclean: clean
@$(RM) -rf pnm
@$(RM) -rf libpnm.a
这个项目完美运行。
在我的第二个项目中,我有 6 个文件和 libpnm.a:
1.libpnm.a
2. main.c(包括 matricules.h)
3. matricules.c(包括matricules.h和codebarre.h)
4. 矩阵.h
5. codebarre.c(包括codebarre.h和PNM.h)
6.codebarre.h
7. 生成文件
CC=gcc
LD=gcc
CFLAGS=--std=c99 -Wall -W -Wmissing-prototypes
LDFLAGS=
DOXYGEN=doxygen
RM=rm
all: codebarre
codebarre: main.o matricules.o codebarre.o libpnm.a
@$(LD) -o $@ $^ $(LDFLAGS)
main.o: main.c matricules.h
@$(CC) -o $@ -c main.c $(CFLAGS)
matricules.o: matricules.c matricules.h codebarre.h
@$(CC) -o $@ -c matricules.c $(CFLAGS)
codebarre.o: codebarre.c codebarre.h
@$(CC) -o $@ -c codebarre.c $(CFLAGS)
clean:
@$(RM) -rf *.o
allclean: clean
@$(RM) -rf codebarre
(每个项目都在一个单独的文件夹中)
当我使用
制作
我收到一个错误:
codebarre.c:6:17:致命错误:PNM.h:没有这样的文件或目录
#include "PNM.h"
^
编译终止。
使用时出现同样的错误
制作codebarre.o
我认为我没有正确使用我的库。但我不知道该怎么做。
编辑:在目录中添加了 PNM.h -> 运行良好
【问题讨论】:
-
你能告诉我们
make的完整输出,而不仅仅是错误信息吗? -
你知道双引号会让预处理器查看当前目录吗?也许您打算使用尖括号并将
-Ipath/to/include/directory添加到CFLAGS。 -
错误信息是make的唯一输出。
标签: c gcc makefile static-libraries