Głupie --as-needed

Marcin 'Qrczak' Kowalczyk qrczak w knm.org.pl
Sob, 10 Lut 2007, 16:20:58 CET


Mam takie polecenie linkowania (nie w pakiecie PLD):

gcc -pthread small/perl/PerlNetHTTP.o -o
small/perl/PerlNetHTTP ../lib/libko_Perl.so -rdynamic
-Wl,-rpath,/usr/lib/perl5/5.8.8/athlon-pld-linux-thread-multi/CORE
-Wl,--as-needed /usr/lib/perl5/5.8.8/athlon-pld-linux-thread-multi/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.8/athlon-pld-linux-thread-multi/CORE -lperl -ldl -lm -lpthread -lc -lcrypt ../lib/libko_Core.so -lm -lgmp -lsigsafe -lrt /home/users/qrczak/cvs/kokogut-0.7.1/runtime/main.o

Fragment od -rdynamic do -lcrypt został wciągnięty przez:
   perl -MExtUtils::Embed -e ldopts
Jak widać, Perl przekazując opcje, z którymi był linkowany, przekazał
również -Wl,--as-needed.

Program się nie linkuje, m.in.:
   ../lib/libko_Core.so: undefined reference to `timer_settime'
   ../lib/libko_Core.so: undefined reference to `__gmpz_cmp'
tzn. nie znajduje m.in. symboli z -lrt i -lgmp używanych
w ../lib/libko_Core.so.

Dlaczego? Jak to poprawić (poza wysedowywaniem -Wl,--as-needed z opcji
przekazywanych przez Perla)? Na moje oko kolejność bibliotek jest dobra.
Jeśli zmienić libko_{Core,Perl}.so na libko_{Core,Perl}.a, to się
linkuje. Te biblioteki z pewnych powodów są kompilowane bez -fPIC;
nie wiem, czy to ma jakies znaczenie.

Czy Perl powinien przekazywać przez ldopts opcję -Wl,--as-needed, która
psuje linkowanie?

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak w knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/



Więcej informacji o liście dyskusyjnej pld-devel-pl