2012-07-24 17 views
9

Trasferito da gcc 4.5 a gcc 4.6 e ora non si collega alle librerie che non vengono utilizzate in fase di compilazione (ad esempio se non vengono importati simboli da esse).Forza per il collegamento alla libreria condivisa inutilizzata

Tuttavia lo scopo di queste librerie è che eseguono costruttori statici e quindi si rendono disponibili all'app in fase di runtime (registrano i loro simboli).

C'è un modo per forzare gcc di collegamento con tutte le librerie elencate via -l?

+1

Probabilmente un cambiamento di opzione 'as-needed'. Prova a precedere i tuoi flag '-l' in' -Wl, -no-as-needed' (non riesci a ricordare la sintassi esatta e al momento non riesci ad accedere a un compilatore) – Mat

risposta

9

Sembra che è necessario sia -Wl,--no-as-needed per disabilitare completamente esso. Oppure, --no-as-needed -lfoo --as-needed disabilitare "come necessario" solo per libfoo.

Fonte: https://lists.ubuntu.com/archives/ubuntu-devel/2010-November/031991.html

EDIT: Ah sembra Mat mi ha battuto in realtà per questo nel commento :-)

+0

Non sembra aiutare, ora anche provando con voci --copy-dt-bisogno-. Forse è necessario ricompilare i file sorgenti, non solo ricollegare? – queen3

+0

La ricostruzione totale ha aiutato. – queen3

Problemi correlati