您好我正在开发一个C libtool库。我有一个问题,添加依赖lib xml2。我决定使用GNU autotools,bat我很新手。
在configure.ac中我有:
# Checks for libraries.
AC_SEARCH_LIBS([xmlCleanupParser],[xml xml2])
AC_SEARCH_LIBS([xmlSAXVersion],[xml xml2])
AC_SEARCH_LIBS([xmlSAXUserParseFile],[xml xml2])
在MakeFile.ac中:
nobase_include_HEADERS = \
foo.h \
bar.h \
foo/foo.h \
foo/bar.h
lib_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = \
foo.c \
bar.c \
sax2.c \
foo/foo.c \
foo/bar.c
check_PROGRAMS = test
test_SOURCES = test.c
test_LDADD = libfoo.la
配置脚本输出正确:
checking for library containing xmlCleanupParser... -lxml2
在生成的Makefile中有:
LIBS = -lxml2
...
libfoo.la: $(libfoo_la_OBJECTS) $(libfoo_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libfoo_la_OBJECTS) $(libfoo_la_LIBADD) $(LIBS)
当我启动Make:
时libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT bar.lo -MD -MP -MF .deps/bar.Tpo -c bar.c -o bar.o >/dev/null 2>&1
mv -f .deps/bar.Tpo .deps/bar.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT sax2.lo -MD -MP -MF .deps/sax2.Tpo -c -o sax2.lo sax2.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT sax2.lo -MD -MP -MF .deps/sax2.Tpo -c sax2.c -fno-common -DPIC -o .libs/sax2.o
sax2.c:21:29: error: libxml/encoding.h: No such file or directory
sax2.c:22:31: error: libxml/xmlversion.h: No such file or directory
sax2.c:23:27: error: libxml/parser.h: No such file or directory
sax2.c:24:30: error: libxml/xmlmemory.h: No such file or directory
sax2.c:25:25: error: libxml/SAX2.h: No such file or directory
sax2.c:26:25: error: libxml/tree.h: No such file or directory
sax2.c:27:30: error: libxml/xmlstring.h: No such file or directory
make命令没有链接libxml2,任何人都可以帮助我吗?
答案 0 :(得分:2)
您的问题不在于链接,而在于编译。注意它是如何说“编译”然后抱怨缺少头文件。这些标题应该在/usr/include/
下的系统上,因此您应该将-I/usr/include
添加到编译命令中(而现在您有两个-I选项,用于.
和..
)。
答案 1 :(得分:1)
您可以简单地使用AC_SEARCH_LIBS
。
PKG_CHECK_MODULES([libxml], [libxml-2.0])
上浪费时间