Почему я получаю неопределенные ошибки ссылок с помощью gcc -static linking - PullRequest
0 голосов
/ 19 декабря 2011

Я пытаюсь статически скомпилировать libpcap и libssl (с -static), и компоновщик выдает мне следующие ошибки:

more undefined references to `ASN1_const_check_infinite_end' follow myprogram       line 0, external location: /lib64/libssl.a(ssl_asn1.o)  
more undefined references to `BIO_test_flags' follow    myprogram   line 0, external location: /lib64/libssl.a(ssl_lib.o)   
------------------------truncated for brevity----------------------------------

Я использую ubuntu 11.4 i686_64 и результат nm на libssl.a с greping BIO_test_flags, это: U BIO_test_flags это означает, что этот символ является неопределенным, и все неопределенные символы находятся в одном и том же состоянии.

Как я могу решить эту проблему с ссылками? (любая идея или подходы приветствуются) [обратите внимание, что статическая компиляция обязательна для меня]

1 Ответ

0 голосов
/ 21 декабря 2011

Предположительно одна из статических библиотек отсутствует. Может быть, вы можете сказать, что просто глядя, но если нет, вот несколько способов выяснить это:

Добавьте -t к вашей команде ссылки и посмотрите, поможет ли это.

Попробуйте strace команду линковки (имейте в виду, что gcc вызывает компоновщик как подпроцесс, поэтому вам нужно следовать за вилками) и посмотреть, какие файлы библиотеки он не находит, и где он их ищет.

...