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