问题描述
我正在尝试在使用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++
和(在“链接选项”下),它指出:“链接器搜索库的标准目录列表……”和“搜索的目录包括几个标准系统目录…… “那些标准系统目录是什么?
最佳解决办法
您想要安装开发包,即libssl-dev:
sudo apt-get install libssl-dev
次佳解决办法
apt-get install libssl-dev
第三种解决办法
How could I have figured that out for myself (other than asking this question here)? Can I somehow tell apt-get to list all packages, and grep for ssl? Or do I need to know the “lib*-dev” naming convention?
如果您要与-lfoo
链接,那么该库可能是libfoo.so
。库本身可能是libfoo
软件包的一部分,并且标头位于您发现的libfoo-dev
软件包中。
有些人使用GUI “synaptic”应用程序(sudo synaptic
)来定位和安装软件包,但我更喜欢使用命令行。 apt-get
支持bash完成,这一点使得从命令行更容易找到正确的包。
尝试键入sudo apt-get install libssl
,然后单击tab
以查看匹配的软件包名称列表(当您需要选择具有多个版本或其他可用变体的软件包的正确版本时,这可能会有所帮助)。
Bash完成实际上非常有用…例如,您还可以通过键入sudo apt-get
然后点击tab
来获取apt-get
支持的命令列表。
第四种办法
我在这里找到了一个详细的解决方案:Install OpenSSL Manually On Linux
来自博客文章……:
Steps to download, compile, and install are as follows (I’m installing version 1.0.1g below; please replace “1.0.1g” with your version number):
Step – 1 : Downloading OpenSSL:
Run the command as below :
$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
Also, download the MD5 hash to verify the integrity of the downloaded file for just varifacation purpose. In the same folder where you have downloaded the OpenSSL file from the website :
$ 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
Step – 2 : Extract files from the downloaded package:
$ tar -xvzf openssl-1.0.1g.tar.gz
Now, enter the directory where the package is extracted like here is openssl-1.0.1g
$ cd openssl-1.0.1g
Step – 3 : Configuration OpenSSL
Run below command with optional condition to set prefix and directory where you want to copy files and folder.
$ ./config –prefix=/usr/local/openssl –openssldir=/usr/local/openssl
You can replace “/usr/local/openssl” with the directory path where you want to copy the files and folders. But make sure while doing this steps check for any error message on terminal.
Step – 4 : Compiling OpenSSL
To compile openssl you will need to run 2 command : make, make install as below :
$ make
Note: check for any error message for verification purpose.
Step -5 : Installing OpenSSL:
$ sudo make install
Or without sudo,
$ make install
That’s it. OpenSSL has been successfully installed. You can run the version command to see if it worked or not as below :
$ /usr/local/openssl/bin/openssl version
OpenSSL 1.0.1g 7 Apr 2014
第五种办法
从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
第六种办法
你想要openssl-devel
包。至少我认为它是Ubuntu上的-devel
。可能是-dev
。这是两个中的一个。