CC=gcc
CFLAGS=-g
LINKS= -I /usr/local/libxml2/include
LIBS= -lxml2
XML_SRCS = xmltest.c ucs2.c
XML_OBJS = $(XML_SRCS:%.c=%.o)
SRCS= ${XML_SRCS}
OBJS= $(SRCS:%.c=%.o)
default: xml
@echo ""
@echo "ALL JOBS Done"
xml: $(XML_OBJS)
$(CC) $(CFLAGS) -o xml ${XML_OBJS} ${LINK} ${LIBS}
clean:
rm -rf *.o *.exe *stackdump xml *.tar
在执行过程中的输出是:
gcc -g -c -o xmltest.o xmltest.c
没有-I /usr/local/libxml2/include和-lxml2,导致编译失败,
请问高手怎么解决呢?
8 个解决方案
#1
自己up一下
#2
呵呵 路过UP
#3
${XML_SRCS}, 为什么要用大括号呢?
#4
${LINK}
你定义的是LINKS,不同名字怎么会出现?
你定义的是LINKS,不同名字怎么会出现?
#5
你是想要把这些参数传递给连接器吧,那么应该用-Wl参数来实现,多个参数间用逗号格开
如 -Wl,${LINK} -Wl,${LIBS}
如 -Wl,${LINK} -Wl,${LIBS}
#6
不对,你还用了-c参数,这是纯编译了,不会有连接的,你的libs也根本不起作用
#7
我没有用-c啊,
但输出的时候就多了个-c,我也搞不懂为什么。
加了-wl也不行啊!
但输出的时候就多了个-c,我也搞不懂为什么。
加了-wl也不行啊!
#8
……
你给个出错信息先。
gcc -g -c -o xmltest.o xmltest.c
这个是由隐含规则引起的编译命令,即对于.o文件,makefile会隐含认为需要从.c文件生成,你如果make只执行到这里,那是xmltest.c在编译为.o时出了错。
你给个出错信息先。
gcc -g -c -o xmltest.o xmltest.c
这个是由隐含规则引起的编译命令,即对于.o文件,makefile会隐含认为需要从.c文件生成,你如果make只执行到这里,那是xmltest.c在编译为.o时出了错。
#1
自己up一下
#2
呵呵 路过UP
#3
${XML_SRCS}, 为什么要用大括号呢?
#4
${LINK}
你定义的是LINKS,不同名字怎么会出现?
你定义的是LINKS,不同名字怎么会出现?
#5
你是想要把这些参数传递给连接器吧,那么应该用-Wl参数来实现,多个参数间用逗号格开
如 -Wl,${LINK} -Wl,${LIBS}
如 -Wl,${LINK} -Wl,${LIBS}
#6
不对,你还用了-c参数,这是纯编译了,不会有连接的,你的libs也根本不起作用
#7
我没有用-c啊,
但输出的时候就多了个-c,我也搞不懂为什么。
加了-wl也不行啊!
但输出的时候就多了个-c,我也搞不懂为什么。
加了-wl也不行啊!
#8
……
你给个出错信息先。
gcc -g -c -o xmltest.o xmltest.c
这个是由隐含规则引起的编译命令,即对于.o文件,makefile会隐含认为需要从.c文件生成,你如果make只执行到这里,那是xmltest.c在编译为.o时出了错。
你给个出错信息先。
gcc -g -c -o xmltest.o xmltest.c
这个是由隐含规则引起的编译命令,即对于.o文件,makefile会隐含认为需要从.c文件生成,你如果make只执行到这里,那是xmltest.c在编译为.o时出了错。