OpenSSL 1.0.1f и неопределенная ссылка на символ 'SSL_state @@ OPENSSL_1.0.0

Сегодня утром я обновил свою версию OpenSSL до 1.0.1f, при компиляции проекта, над которым я сейчас работаю, я получил эту ошибку OpenSSL от компоновщика:

/ usr / bin / ld: janus-dtls.o: неопределенная ссылка на символ 'SSL_state @@ OPENSSL_1.0.0' //lib/x86_64-linux-gnu/libssl.so.1.0.0: ошибка добавления символов: DSO отсутствует из командная строка collect2: ошибка: ld вернул 1 статус выхода

Я пошел искать подсказки в Интернете, и единственное, что я нашел, это то, что мне нужно скомпилировать проект с помощью -lssl и -lcrypto. Но дело в том, что я уже делаю:

./Makefile:598:JANUS_LIBS = -pthread -L / usr / local / lib -lnice -lgthread-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -ljansson -lssl -lcrypto -lsofia-sip-ua

Итак, я догадался, что спрошу DPKG, может быть, я что-то забыл. Вот ответ:

$ pkg-config --libs openssl

-L/usr/local/lib -lssl -lcrypto 

Что я и делаю.

Кто-нибудь уже сталкивался с этой ошибкой и сумел ее исправить?

А может я что-то делаю не так, чего не вижу?

Любая помощь приветствуется.


person Hakeem El Bakka-lee    schedule 09.01.2017    source источник
comment
Не размещайте изображения текста!   -  person too honest for this site    schedule 09.01.2017


Ответы (1)


Запросы символов выполняются ПЕРЕД их связыванием, поэтому порядок библиотек строгий.

Если LibA имеет символ, который LibB нужен, порядок будет следующим:

gcc mod1.o mod2.o -lLibA  -lLibB  

Дважды проверьте, что все библиотеки в Makefile не пропали.

person Alessandro Rossi    schedule 09.01.2017