libtool - następny kwiatek
Jakub Bogusz
qboosh w pld.org.pl
Czw, 17 Kwi 2003, 22:36:45 CEST
Próbuję zrobić "libtool convenience static library", do wlinkowania
w binarkę. Wszystko jest OK, dopóki ta biblioteka jest w C. Przy C++
zaczynają się schody:
$ libtool --mode=link athlon-pld-linux-g++ -o libblah.la -static
rm -fr .libs/libblah.a .libs/libblah.la
rm -fr .libs/libblah.lax
mkdir .libs/libblah.lax
rm -fr .libs/libblah.lax/libstdc++.a
mkdir .libs/libblah.lax/libstdc++.a
(cd .libs/libblah.lax/libstdc++.a && ar x /usr/lib/./libstdc++.a)
ar: /usr/lib/./libstdc++.a: No such file or directory
$ libtool --mode=link athlon-pld-linux-g++ -o libblah.la -static -lgd
rm -fr .libs/libblah.lax
rm -fr .libs/libblah.lax
mkdir .libs/libblah.lax
rm -fr .libs/libblah.lax/libgd.a
mkdir .libs/libblah.lax/libgd.a
(cd .libs/libblah.lax/libgd.a && ar x /usr/lib/libgd.a)
ar: /usr/lib/libgd.a: No such file or directory
On tutaj nie powinien wlinkowywać statycznej biblioteki, tylko dodać
zależność do libblah.la, do późniejszego wykorzystania. Co ciekawe:
$ libtool --mode=link --tag=CXX athlon-pld-linux-g++ -o libblah.la -static
rm -fr .libs/libblah.lax
ar cru .libs/libblah.a
ranlib .libs/libblah.a
creating libblah.la
(cd .libs && rm -f libblah.la && ln -s ../libblah.la libblah.la)
$ libtool --mode=link --tag=CXX athlon-pld-linux-g++ -o libblah.la -static -lgd
rm -fr .libs/libblah.a .libs/libblah.la
ar cru .libs/libblah.a
ranlib .libs/libblah.a
creating libblah.la
(cd .libs && rm -f libblah.la && ln -s ../libblah.la libblah.la)
Tutaj zachowuje się jak trzeba.
Z Fortranem (g77, --tag=F77) jest podobnie.
Chyba wynika to z kolejności parsowania linii poleceń (--tag powoduje
wczytanie konfiguracji dla danego języka wcześniej niż przy
automatycznym wykrywaniu języka; -static ustawia build_libtool_libs=no;
w konfiguracji dla CXX jest build_libtool_libs=yes, co powoduje te
bzdury).
Grrrr... tym razem spróbuję uderzyć na bug-libtool, bo to łatwo opisać.
--
Jakub Bogusz http://cyber.cs.net.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl