Как использовать OpenSSL в GCC?
Я пытаюсь использовать openssl в программе gcc, но он не работает.
g++ server.cpp /usr/lib/libssl.a -o server
дает сообщение об ошибке, как и все с опцией -l
. Что я должен ввести в командной строке для связи с openssl? Файл /usr/lib/libssl.a
существует, но, тем не менее, я все еще получаю ошибку компоновщика, no such function MD5() exists
.
- Ошибки компоновщика при компиляции против glib ...?
- ошибка LNK2038: обнаружено несоответствие для '_ITERATOR_DEBUG_LEVEL': значение '0' не соответствует значению '2' в main.obj
- Как удалить пакет из Laravel с помощью композитора?
- ошибка LNK2019: неразрешенный внешний символ _main, указанный в функции ___tmainCRTStartup
- Шаблон C ++, ссылка на ошибку
- Почему компиляторы настолько глупы?
- Определение переменной в файлах заголовков
- Передача gcc непосредственно для связывания библиотеки статически
- Порядок инициализации статических переменных
- Что такое опция -fPIE для независимых по позиции исполняемых файлов в gcc и ld?
- Почему фатальная ошибка «LNK1104: невозможно открыть файл« C: \ Program.obj »возникает при компиляции проекта C ++ в Visual Studio?
- Используйте как статические, так и динамически связанные библиотеки в gcc
- Как принудительно включить определение «неиспользуемых» объектов в библиотеке
Не зная точных ошибок, которые вы видите, трудно обеспечить точное решение. Вот моя лучшая попытка.
Из предоставленной вами информации звучит так, как будто компоновщик терпит неудачу, потому что он не может найти ссылку на функцию md5 в libssl.a. Я считаю, что эта функция действительно находится в libcrypto, поэтому вам может понадобиться указать эту библиотеку.
g++ server.cpp -L/usr/lib -lssl -lcrypto -o server
Вы или другие пользователи могут найти эту статью в статье developerWorks :
- Безопасное программирование с помощью API OpenSSL
- http://www.ibm.com/developerworks/linux/library/l-openssl.html
В нем описывается большинство вещей, которые вам нужно знать, чтобы сфокусироваться на OpenSSL и C / C ++. Если вы обнаружите, что выполняете большинство шагов, это может помочь вам понять, что нужно делать.
Удачи.
В Eclipse IDE выберите Свойство Project -> c / c ++ Build -> Настройки gcc c linker (из настроек инструмента) -> добавить в путь поиска библиотеки (-L)
/ usr / lib -lssl -lcrypto
В дополнение к принятым ответам я не смог составить компиляцию примера OpenSSL для AES-CCM:
https://github.com/openssl/openssl/blob/master/demos/evp/aesccm.c
Чтобы он работал, мне нужно было добавить еще две вещи:
- Библиотека динамической связи:
-ldl
- Библиотека PThread для использования поддержки streamов POSIX:
-pthread
(добавление непосредственно библиотеки с помощью -lpthread не рекомендуется )