如何在Ubuntu上安装OpenSSL库?

时间:2010-06-10 17:40:21

标签: c++ ubuntu installation openssl

我正在尝试在使用OpenSSL 1.0.0的Ubuntu 10.04 LTS上构建一些代码。当我运行make时,它使用“-lssl”选项调用g ++。来源包括:

#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包不包含库。我在make上遇到这些错误:

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

如何在Ubuntu 10.04 LTS上安装OpenSSL C ++库?

我为-l选项做了man g++和(在“链接选项”下),它指出:“链接器搜索库的标准目录列表......”和“搜索到的目录包括几个标准系统目录......“那些标准系统目录是什么?

9 个答案:

答案 0 :(得分:420)

您想要安装开发包,即libssl-dev:

sudo apt-get install libssl-dev

答案 1 :(得分:23)

apt-get install libssl-dev

答案 2 :(得分:13)

  

我怎么能想到这一点   我自己(除了问这个   这里有问题)?我可以告诉你吗?   apt-get列出所有包,以及grep   对于ssl?或者我需要知道   “lib * -dev”命名约定?

如果您要与-lfoo关联,那么该库很可能是libfoo.so。库本身可能是libfoo包的一部分,并且标题位于您发现的libfoo-dev包中。

有些人使用GUI“synaptic”应用程序(sudo synaptic)来(定位和)安装软件包,但我更喜欢使用命令行。从命令行中查找正确的包更容易的一件事是apt-get支持bash完成。

尝试键入sudo apt-get install libssl然后点击标签以查看匹配的软件包名称列表(当您需要选择具有多个版本或其他版本的软件包的正确版本时,这可能有所帮助可用的变化。)

Bash完成实际上非常有用...例如,您还可以通过键入apt-get然后点击标签来获取sudo apt-get支持的命令列表。< / p>

答案 3 :(得分:4)

从Ubuntu上的源代码安装openssl库的另一种方法,按照以下步骤操作,这里WORKDIR是你的工作目录:

sudo apt-get install pkg-config
cd WORKDIR
git clone https://github.com/openssl/openssl.git
cd openssl
./config
make
sudo make install
# Open file /etc/ld.so.conf, add a new line: "/usr/local/lib" at EOF
sudo ldconfig

答案 4 :(得分:4)

我在这里找到了详细的解决方案:Install OpenSSL Manually On Linux

来自博客文章......:

  

下载,编译和安装的步骤如下(我在下面安装1.0.1g版本;请将“1.0.1g”替换为您的版本号):

     

步骤1:下载OpenSSL:

     

运行如下命令:

     

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz

     

此外,下载MD5哈希以验证下载文件的完整性,以便进行各种变换。在您从网站下载OpenSSL文件的同一文件夹中:

     

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz.md5
  $ md5sum openssl-1.0.1g.tar.gz
  $ cat openssl-1.0.1g.tar.gz.md5

     

步骤2:从下载的软件包中提取文件:

     

$ tar -xvzf openssl-1.0.1g.tar.gz

     

现在,输入提取包的目录,就像这里的openssl-1.0.1g

一样      

$ cd openssl-1.0.1g

     

步骤3:配置OpenSSL

     

使用可选条件运行以下命令,以设置要复制文件和文件夹的前缀和目录。

     

$ ./config –prefix=/usr/local/openssl –openssldir=/usr/local/openssl

     

您可以将“/ usr / local / openssl”替换为要复制文件和文件夹的目录路径。但请确保在执行此步骤时检查终端上的任何错误消息。

     

步骤4:编译OpenSSL

     

要编译openssl,您需要运行2命令:make,make install如下:

     

$ make

     

注意:检查是否有任何错误消息以进行验证。

     

步骤-5:安装OpenSSL:

     

$ sudo make install

     

或没有sudo,

     

$ make install

     

就是这样。 OpenSSL已成功安装。您可以运行version命令以查看它是否有效,如下所示:

     

$ /usr/local/openssl/bin/openssl version

     

OpenSSL 1.0.1g 7 Apr 2014

答案 5 :(得分:3)

您需要openssl-devel个包裹。 至少我认为在Ubuntu上是-devel。可能是-dev。这是两个中的一个。

答案 6 :(得分:0)

通常,在Debian或Ubuntu上时,如果您缺少开发文件(或与此相关的任何其他文件),请使用id来确定哪个软件包提供了该文件:

apt-file

使用~ apt-file search openssl/bio.h android-libboringssl-dev: /usr/include/android/openssl/bio.h libssl-dev: /usr/include/openssl/bio.h libwolfssl-dev: /usr/include/cyassl/openssl/bio.h libwolfssl-dev: /usr/include/wolfssl/openssl/bio.h 快速浏览命令返回的每个软件包,将告诉您要查找的软件包中的哪个:

apt show

答案 7 :(得分:0)

  1. 转到官方网站并下载所需版本的源代码

  2. 然后解压缩更新包并执行以下命令

    ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl  -Wl,-rpath,/usr/local/ssl/lib shared
    

因为默认设置是仅生成静态库,所以如果要动态库,请添加“共享” 选项

  1. make && make install

答案 8 :(得分:-3)

sudo apt-get install libcurl4-openssl-dev