makefile为什么不能执行-I的目录

时间:2021-11-20 12:43:25
以下是我的Makefile文件:
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,不同名字怎么会出现?

#5


你是想要把这些参数传递给连接器吧,那么应该用-Wl参数来实现,多个参数间用逗号格开
如 -Wl,${LINK} -Wl,${LIBS}

#6


不对,你还用了-c参数,这是纯编译了,不会有连接的,你的libs也根本不起作用

#7


我没有用-c啊,
但输出的时候就多了个-c,我也搞不懂为什么。
加了-wl也不行啊!

#8


……
你给个出错信息先。

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,不同名字怎么会出现?

#5


你是想要把这些参数传递给连接器吧,那么应该用-Wl参数来实现,多个参数间用逗号格开
如 -Wl,${LINK} -Wl,${LIBS}

#6


不对,你还用了-c参数,这是纯编译了,不会有连接的,你的libs也根本不起作用

#7


我没有用-c啊,
但输出的时候就多了个-c,我也搞不懂为什么。
加了-wl也不行啊!

#8


……
你给个出错信息先。

gcc -g   -c -o xmltest.o xmltest.c
这个是由隐含规则引起的编译命令,即对于.o文件,makefile会隐含认为需要从.c文件生成,你如果make只执行到这里,那是xmltest.c在编译为.o时出了错。