libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Darwin: interlib deps


From: Akim Demaille
Subject: Darwin: interlib deps
Date: Sat, 4 Dec 2004 13:57:16 +0100

I'm not sure I understand how interlib deps are expected to work.
In a project of mine, I have several directories containing
libs.  For instance, in the ast/ directory I have the following
Makefile.am snippet:

noinst_LTLIBRARIES = libast.la
libast_la_SOURCES =                                     \
        position.hh location.hh                         \
        ...
        libast.hh libast.hxx libast.cc                  \
        tasks.hh tasks.cc

and to have interlib dependency support, I report that this
lib depends on three siblings: symbol, task, and misc:

libast_la_LDFLAGS = -L../symbol -lsymbol -L../task -ltask -L../misc -lmisc

It seems that linking is correct:

/bin/sh ../../libtool --tag=CXX --mode=link g++ -Wall -W -Wcast-align -Wcast-qual -Wformat -Wmissing-prototypes -Wshadow -Wstrict-prototypes -Wwrite-strings -g -O2 -pipe -o libast.la -L../symbol -lsymbol -L../task -ltask -L../misc -lmisc decs.lo arrayexp.lo arrayty.lo assignexp.lo ast.lo breakexp.lo callexp.lo dec.lo escapable.lo exp.lo field.lo fieldinit.lo fieldvar.lo forexp.lo functiondec.lo ifexp.lo intexp.lo letexp.lo namety.lo nilexp.lo opexp.lo recordexp.lo recordty.lo seqexp.lo simplevar.lo stringexp.lo subscriptvar.lo ty.lo typable.lo typedec.lo var.lo vardec.lo whileexp.lo print-visitor.lo libast.lo tasks.lo rm -fr .libs/libast.a .libs/libast.laar cru .libs/libast.a .libs/decs.o .libs/arrayexp.o .libs/arrayty.o .libs/assignexp.o .libs/ast.o .libs/breakexp.o .libs/callexp.o .libs/dec.o .libs/escapable.o .libs/exp.o .libs/field.o .libs/fieldinit.o .libs/fieldvar.o .libs/forexp.o .libs/functiondec.o .libs/ifexp.o .libs/intexp.o .libs/letexp.o .libs/namety.o .libs/nilexp.o .libs/opexp.o .libs/recordexp.o .libs/recordty.o .libs/seqexp.o .libs/simplevar.o .libs/stringexp.o .libs/subscriptvar.o .libs/ty.o .libs/typable.o .libs/typedec.o .libs/var.o .libs/vardec.o .libs/whileexp.o .libs/print-visitor.o .libs/libast.o .libs/tasks.oranlib .libs/libast.acreating libast.la(cd .libs && rm -f libast.la && ln -s ../libast.la libast.la)

in the beginning -L../symbol -lsymbol -L../task -ltask -L../misc -lmisc do appear.
But when I try to link a small test case:

check_PROGRAMS = test-ast
test_ast_SOURCES = test-ast.cc
test_ast_LDADD = libast.la
TESTS = test-ast

I have linking failures: neither symbol, task or misc is added.
libast.la contains:

# Libraries that this one depends upon.
dependency_libs=' -L/Users/akim/src/tc/_build/src/symbol -L/Users/akim/src/tc/_build/src/task -L/Users/akim/src/tc/_build/src/misc '

is this normal?  When I had -lsymbol etc. by hand, linking and execution
passes.

How am I expected to do that?

If I try to link again libast as a dynamic library it fails to:

/bin/sh ../../libtool --tag=CXX --mode=link g++ -Wall -W -Wcast-align -Wcast-qual -Wformat -Wmissing-prototypes -Wshadow -Wstrict-prototypes -Wwrite-strings -g -O2 -pipe -o test-ast -last test-ast.o g++ -Wall -W -Wcast-align -Wcast-qual -Wformat -Wmissing-prototypes -Wshadow -Wstrict-prototypes -Wwrite-strings -g -O2 -pipe -o test-ast test-ast.o -Wl,-bind_at_load /Users/akim/src/tc/_build/src/ast/.libs/libast.ald: Undefined symbols:symbol::Symbol::Symbol[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)misc::Deref::Deref[in-charge](std::basic_ostream<char, std::char_traits<char> >&)misc::iendl(std::basic_ostream<char, std::char_traits<char> >&)misc::Escape::Escape[in-charge](std::basic_ostream<char, std::char_traits<char> >&)misc::decendl(std::basic_ostream<char, std::char_traits<char> >&)misc::incendl(std::basic_ostream<char, std::char_traits<char> >&)misc::decindent(std::basic_ostream<char, std::char_traits<char> >&)misc::incindent(std::basic_ostream<char, std::char_traits<char> >&)misc::Escape::escape_(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) constmake[2]: *** [test-ast] Error 1make[1]: *** [check-am] Error 2make: *** [check] Error 2

-last appears, but...





reply via email to

[Prev in Thread] Current Thread [Next in Thread]