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
   \__/       [EMAIL PROTECTED]
    ^^     http://qrnik.knm.org.pl/~qrczak/

_______________________________________________
pld-devel-pl mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl

Odpowiedź listem elektroniczym