Этим утром я обновил свою версию 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: error: 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
Именно это я и делаю.
Кто-нибудь уже сталкивался с этой ошибкой и сумел ее исправить?
Или, может, я делаю что-то не так, что не вижу?
Любая помощь приветствуется.
Запросы на символы выполняются ПЕРЕД их связыванием, поэтому порядок библиотек строгий.
Если у LibA есть символ, который нужен LibB, порядок будет
gcc mod1.o mod2.o -lLibA -lLibB
Дважды проверьте, что все библиотеки в make-файле не отсутствуют.
Других решений пока нет …