2010-06-10 93 views
150

我想在Ubuntu 10.04 LTS上使用OpenSSL 1.0.0构建一些代码。当我运行make时,它会用“-lssl”选项调用g ++。来源包括:如何在Ubuntu上安装OpenSSL库?

#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 

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

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

+1

不太重复,但[什么是* -devel软件包?](http://stackoverflow.com/questions/2358801/what-are-devel-packages)。 – Troubadour 2010-06-10 17:43:44

+0

你对'-dev'命名约定是正确的。你也可以使用'synaptic'软件包管理器来列出名称中包含libssl的所有软件包 - 浏览该列表和它们的描述可能会给你提供线索。 – crazyscot 2010-06-10 19:40:04

+1

我知道这个问题现在已经死了,但自从我最近发现它以来,我认为其他人也可能会这样。 如果要列出与特定名称类似的所有包,我喜欢使用> aptitude搜索 它不需要root特权级别来运行搜索。 – 2010-12-07 05:07:26

回答

324

你想安装开发包,这是的libssl-dev的:

sudo apt-get install libssl-dev 
+1

但是,这不是他想要的版本(1.0.0),它不是10.04版本。看到这个答案1.0.0:http://stackoverflow.com/questions/3153114/how-do-i-install-and-build-against-openssl-1-0-0-on-ubuntu – nealmcb 2010-12-22 06:42:53

+0

啊,好的电话。我当时只注意到他正在尝试使用开发库,但未安装-dev软件包。我甚至没有注意到版本号。 – 2010-12-22 15:16:08

4

你想要openssl-devel软件包。 至少我认为这是在Ubuntu上进行的。可能是-dev。这是两个之一。

+0

'sudo apt-get install openssl-dev'和'sudo apt-get install openssl-devel' return“E:Could not find包......“ – 2010-06-10 17:44:16

+6

显然它是libssl-dev,正如其他人所说的那样。我不使用Ubuntu,所以我不熟悉软件包名称。 – jonescb 2010-06-10 17:46:21

+6

Openssl-devel是我需要的CentOS 6.'sudo yum install openssl-devel *' – Banjer 2012-04-05 15:13:50

22

apt-get install libssl-dev

11

我怎么会想通了这一点对于 自己(而不是在这里问这个 问题)?我可以不知何故告诉 apt-get列出所有软件包,grep for ssl?或者我需要知道 “lib * -dev”命名约定?

如果您链接到-lfoo那么该库很可能是libfoo.so。库本身可能是libfoo软件包的一部分,并且标头位于libfoo-dev软件包中,正如您发现的那样。

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

尝试输入sudo apt-get install libssl,然后点击“选项卡”以查看匹配包名称的列表(当需要选择具有多个版本或其他可用变体的包的正确版本时,这可以提供帮助)。

Bash完成实际上非常有用......例如,您还可以通过输入sudo apt-get然后点击“选项卡”来获得“apt-get”支持的命令列表。

+2

我想你是指“Synaptics”应用程序,而不是“协同作用”。 Synergy是一种在多个系统上共享键盘和鼠标的工具。除非另有协同作用,我不知道。 – Tauren 2011-05-27 00:49:47

+0

谢谢,我_did_的意思是“突触”包管理器(注意:不是Synaptics,这是一家公司)。还有另一种Synergy,它是Palm webOS的一个功能,这可能是我的手指输入“synergy”而不是“synaptic”的原因。 – 2012-03-15 22:44:29

+0

Ubuntu可以缓解人们的痛苦,因为多年以来它一直是个问题。他们*可以将'openssl-dev'别名为'libssl-dev',但他们选择不这样做。 – jww 2017-02-02 02:21:47

2

另一种方法是从Ubuntu的源代码安装OpenSSL库,遵循以下步骤,在这里WORKDIR是你的工作目录:

  1. 命令和apt-get安装pkg配置
  2. CD WORKDIR
  3. 混帐克隆https://github.com/openssl/openssl.git
  4. CD OpenSSL的
  5. ./config中
  6. 使
  7. 须藤使安装
  8. 打开/etc/ld.so.conf文件,添加一个新行: “在/ usr/local/lib目录” 在EOF
  9. 须藤LDCONFIG