Hi I am developing a C libtool library. I have an issue adding dependency lib xml2. I decide to use GNU autotools, bat I am very newbie.
In configure.ac I have:
# Checks for libraries.
AC_SEARCH_LIBS([xmlCleanupParser],[xml xml2])
AC_SEARCH_LIBS([xmlSAXVersion],[xml xml2])
AC_SEARCH_LIBS([xmlSAXUserParseFile],[xml xml2])
In 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
The configure script output correctly:
checking for library containing xmlCleanupParser... -lxml2
In the generated Makefile there are:
LIBS = -lxml2
...
libfoo.la: $(libfoo_la_OBJECTS) $(libfoo_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libfoo_la_OBJECTS) $(libfoo_la_LIBADD) $(LIBS)
When I launch 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
The make command does not link the libxml2, anyone can help me please?
Your problem is not with linking, but with compiling. Note how it says "compile" and then complains about missing header files. Those headers should be on your system under /usr/include/
, so you should add -I/usr/include
to the compilation command (whereas right now you have two -I options, for .
and ..
).