2012-07-24 11 views
9

Przeniesiono z gcc 4.5 do gcc 4.6, a teraz nie łączy się z bibliotekami, które nie są używane w czasie kompilacji (tj. Jeśli nie są importowane z nich symbole).Wymuś połączenie z nieużywaną biblioteką wspólną

Jednak celem tych bibliotek jest wykonywanie statycznych konstruktorów, dzięki czemu stają się one dostępne dla aplikacji w czasie wykonywania (zarejestruj swoje symbole).

Czy istnieje sposób zmuszenia gcc do połączenia ze wszystkimi bibliotekami wymienionymi przez -l?

+1

prawdopodobnie zmiany w 'opcji jako-needed'. Spróbuj poprzedzić swoje flagi '-l' w' -Wl, -no-as-needed' (nie pamiętam dokładnej składni i teraz nie mam dostępu do kompilatora) – Mat

Odpowiedz

9

Wygląda na to, że potrzebujesz albo -Wl,--no-as-needed, aby całkowicie go wyłączyć. Lub, --no-as-needed -lfoo --as-needed, aby wyłączyć "w razie potrzeby" tylko dla libfoo.

Źródło: https://lists.ubuntu.com/archives/ubuntu-devel/2010-November/031991.html

EDIT: Ah wygląda Mat faktycznie pokazał mi to w komentarzu :-)

+0

Nie wydaje się, aby pomóc, teraz także próbując z --copy-dt-needed-entries. Może trzeba przekompilować pliki źródłowe, a nie tylko połączyć? – queen3

+0

Pomógł całkowity remont. – queen3

Powiązane problemy