Napotkałem kilka przypadków projektów budowlanych, które korzystają z bibliotek współdzielonych lub modułów ładowanych dynamicznie, gdzie moduł/biblioteka zależy od innej biblioteki, ale nie sprawdza, czy udostępniona kopia jest dostępna przed próbą połączenia. Powoduje to, że pliki obiektów z archiwum statycznego (plik .a
) zostaną przyciągnięte do wynikowego .so
, a ponieważ te pliki obiektów nie są PIC, wynikowy plik .so
ma TEKSTRYNY (bardzo złe obciążenie i wykorzystanie pamięci) lub całkowicie się nie powiedzie (na archsach takich jak x86_64, które nie obsługują bibliotek współużytkowanych PIC).Czy mogę, aby gcc ignorowało statyczne biblioteki podczas łączenia bibliotek współdzielonych?
Czy jest jakiś sposób, aby sterownik kompilatora gcc odmówił połączenia kodu biblioteki statycznej z udostępnianą biblioteką współdzieloną? Wydaje się to trudne i skomplikowane przez ewentualną potrzebę łączenia minimalnych ilości z libgcc.a i tym podobnych ...