2010-06-10 181 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