Я пытаюсь создать некоторый код Ubuntu 10.04 LTS, который использует OpenSSL 1.0.0. Когда я работаю, делают, это вызывает g ++ с "-lssl" опцией. Источник включает:
#include <openssl/bio.h>
#include <openssl/buffer.h>
#include <openssl/des.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
Я работал:
$ sudo apt-get install openssl
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Но я предполагаю, что openssl пакет не включает библиотеку. Я преуспеваю, эти ошибки делают:
foo.cpp:21:25: error: openssl/bio.h: No such file or directory
foo.cpp:22:28: error: openssl/buffer.h: No such file or directory
foo.cpp:23:25: error: openssl/des.h: No such file or directory
foo.cpp:24:25: error: openssl/evp.h: No such file or directory
foo.cpp:25:25: error: openssl/pem.h: No such file or directory
foo.cpp:26:25: error: openssl/rsa.h: No such file or directory
Как я устанавливаю библиотеку C++ OpenSSL по Ubuntu 10.04 LTS?
Я сделал a man g++
и (под "Опциями для Соединения") для-l опции это указывает: "Компоновщик ищет стандартный список каталогов для библиотеки...", и "Искавшие каталоги включают несколько стандартных системных каталогов..." Каковы те стандартные системные каталоги?
Вы хотите установить пакет разработки, который является libssl-dev:
sudo apt-get install libssl-dev
Как я мог понять это для я (кроме того, что спрашиваю об этом вопрос здесь)? Могу я как-нибудь сказать apt-get для вывода списка всех пакетов и grep для ssl? Или мне нужно знать Соглашение об именах "lib * -dev"?
Если вы линкуете с помощью -lfoo
, то скорее всего, это libfoo.so
. Сама библиотека, вероятно, является частью пакета libfoo
, а заголовки находятся в пакете libfoo-dev
, как вы обнаружили.
Некоторые люди используют «синаптическое» приложение с графическим интерфейсом ( sudo synaptic
) для (поиска и) установки пакетов, но я предпочитаю использовать командную строку. Одна вещь, которая упрощает поиск нужного пакета из командной строки, - это тот факт, что apt-get
поддерживает завершение bash.
Попробуйте ввести sudo apt-get install libssl
, а затем нажмите вкладку , чтобы увидеть список совпадающих имен пакетов (что может помочь, когда вам нужно выбрать правильную версию пакета. который имеет несколько версий или других доступных вариаций).
Завершение Bash на самом деле очень полезно ... например, вы также можете получить список команд, поддерживаемых apt-get
, набрав sudo apt-get
и затем нажав вкладка .
Вам нужен пакет openssl-devel
.
По крайней мере, я думаю, что это -devel
в Ubuntu. Может быть -dev
. Это одно из двух.