当前位置: 技术问答>linux和unix
请教一个关于Makefile的问题
来源: 互联网 发布时间:2016-09-30
本文导语: 我编写了一个Makefile,内容如下: CC = gcc CFLAGS = -Wall -g -O0 #-D_DEBUG RM = /bin/rm -f DEMON_SRC = test.o amazons3.o request.o xml_parser.o md5.o general.o util.o all: demon demon: $(DEMON_SRC) $(CC) -o demon $(DEMON_SRC) test.o: test....
我编写了一个Makefile,内容如下:
可是当我执行make时总是报下面的错误:
gcc -c test.c
在包含自 amazons3.h:5 的文件中,
从 test.c:3:
xml_parser.h:10:27: 错误:libxml/parser.h:没有那个文件或目录
xml_parser.h:11:30: 错误:libxml/xmlmemory.h:没有那个文件或目录
make: *** [test.o] 错误 1
大家能帮我看看问题处在哪里吗?
CC = gcc
CFLAGS = -Wall -g -O0 #-D_DEBUG
RM = /bin/rm -f
DEMON_SRC = test.o amazons3.o request.o xml_parser.o md5.o general.o util.o
all: demon
demon: $(DEMON_SRC)
$(CC) -o demon $(DEMON_SRC)
test.o: test.c amazons3.h
$(CC) -c test.c
amazons3.o: amazons3.c amazons3.h xml_parser.h request.h
$(CC) -c amazons3.c
request.o: request.c request.h md5.h general.h util.h
$(CC) -c request.c
xml_parser.o: xml_parser.c xml_parser.h general.h
$(CC) -c xml_parser.c -I/usr/include/libxml2 -lxml2
md5.o: md5.c md5.h
$(CC) -c md5.c -lm
general.o: general.c general.h
$(CC) -c general.c
util.o: util.c util.h
$(CC) -c util.c -lcurl
clean:
$(RM) demon *.o
可是当我执行make时总是报下面的错误:
gcc -c test.c
在包含自 amazons3.h:5 的文件中,
从 test.c:3:
xml_parser.h:10:27: 错误:libxml/parser.h:没有那个文件或目录
xml_parser.h:11:30: 错误:libxml/xmlmemory.h:没有那个文件或目录
make: *** [test.o] 错误 1
大家能帮我看看问题处在哪里吗?
|
楼主可以试试俺的模板,啥的不用改就可以用的。
#
# Makefile for program hello
#
program := hello
sources := $(wildcard *.c)
headers := $(wildcard *.h)
objects := $(sources:.c=.o)
deps := $(sources:.c=.d)
CC := gcc
SHARED := -shared
FPIC :=
CFLAGS := $(FPIC) -MMD
-I/usr/include/libxml2
LDFLAGS := -L/usr/lib -lxml2 -lm
RM := rm -f
TAR := tar
GZIP := gzip
me := Makefile
all: $(program)
hello: $(objects)
$(CC) -o $@ $(CFLAGS) $(objects) $(LDFLAGS) $(LDLIBS)
dist:
pkg=`pwd`; tar cvf - $(me) $(sources) $(headers)
| $(GZIP) -c > `basename $${pkg}`.tar.gz
clean:
$(RM) $(objects)
$(RM) $(deps)
$(RM) $(shlib)
-include $(deps)
|
楼上都给你指出了
test.o: test.c amazons3.h
$(CC) -I/usr/include/libxml2 -c test.c
其它几个.o估计也需要
可以直接修改CC,如CC=gcc -I/usr/include/libxml2
这样下面编译每个.o的地方应该就不用加-I/usr..了
test.o: test.c amazons3.h
$(CC) -I/usr/include/libxml2 -c test.c
其它几个.o估计也需要
可以直接修改CC,如CC=gcc -I/usr/include/libxml2
这样下面编译每个.o的地方应该就不用加-I/usr..了
|
编译xml_parser.o加上了-I/usr/include/libxml2 -lxml2 跟
编译test.o没有半点关系,
编译test.o时,只找它对应的依赖test.c amazons3.h ,
建议
CC=gcc
CFLAGS= -Wall -g -c
INCLUDE=-I/usr/include/libxml2
$(CC) $(CFLAGS) $(INCLUDE)
编译test.o没有半点关系,
编译test.o时,只找它对应的依赖test.c amazons3.h ,
建议
CC=gcc
CFLAGS= -Wall -g -c
INCLUDE=-I/usr/include/libxml2
$(CC) $(CFLAGS) $(INCLUDE)
|
test.o: test.c amazons3.h
$(CC) -c test.c
这里就没有加嘛
$(CC) -c test.c
这里就没有加嘛
|
$(RM) $(shlib)
===>
$(RM) $(program)
===>
$(RM) $(program)