我正在尝试在使用 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 包不包含该库。我在制作时收到这些错误:
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++
和(在“链接选项”下),它指出:“链接器搜索库的标准目录列表......”和“搜索的目录包括几个标准系统目录。 ..” 那些标准系统目录是什么?
-dev
命名约定是正确的。您还可以使用 synaptic
包管理器列出名称包含 libssl 的所有包 - 浏览该列表及其描述可能会给您提供线索。
apt-cache search package-name
您要安装开发包,即 libssl-dev:
sudo apt-get install libssl-dev
跑:
apt-get install libssl-dev
我怎么能自己弄清楚(除了在这里问这个问题)?我可以以某种方式告诉 apt-get 列出所有包,并 grep 获取 ssl 吗?还是我需要知道“lib*-dev”命名约定?
如果您与 -lfoo
链接,那么库很可能是 libfoo.so
。如您所见,库本身可能是 libfoo
包的一部分,并且标头位于 libfoo-dev
包中。
有些人使用 GUI“突触”应用程序 (sudo synaptic
) 来(定位和)安装软件包,但我更喜欢使用命令行。使从命令行更容易找到正确包的一件事是 apt-get
支持 bash 完成。
尝试输入 sudo apt-get install libssl
,然后点击 tab 以查看匹配包名称的列表(当您需要选择具有多个版本或其他可用变体的包的正确版本时,这会有所帮助)。
Bash 补全实际上非常有用...例如,您还可以通过键入 sudo apt-get
然后点击 tab 来获取 apt-get
支持的命令列表。
openssl-dev
别名为 libssl-dev
,但他们选择不这样做。
我在这里找到了详细的解决方案:Install OpenSSL Manually On Linux
从博客文章...:
下载、编译、安装步骤如下(我下面安装的是1.0.1g版本,请把“1.0.1g”换成你的版本号): 步骤一:下载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 Step – 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 注意:检查任何错误消息以进行验证。 Step -5 : 安装 OpenSSL: $ sudo make install 或者不用 sudo, $ make install 就是这样。 OpenSSL 已成功安装。您可以运行 version 命令以查看它是否有效,如下所示: $ /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
所有这些答案都非常过时,并且从软件包仍在开发时开始。您现在可以使用下面列出的“正常”命令:
sudo apt install openssl
您需要 openssl-devel
包。至少我认为它是 Ubuntu 上的 -devel
。可能是-dev
。它是两者之一。
sudo apt-get install openssl-dev
和 sudo apt-get install openssl-devel
都返回“E:找不到包...”
sudo yum install openssl-devel*
作为一般规则,当您在 Debian 或 Ubuntu 上缺少开发文件(或与此相关的任何其他文件)时,请使用 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
将告诉您哪些包是您要查找的包:
~ apt show libssl-dev
Package: libssl-dev
Version: 1.1.1d-2
Priority: optional
Section: libdevel
Source: openssl
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
Installed-Size: 8,095 kB
Depends: libssl1.1 (= 1.1.1d-2)
Suggests: libssl-doc
Conflicts: libssl1.0-dev
Homepage: https://www.openssl.org/
Tag: devel::lang:c, devel::library, implemented-in::TODO, implemented-in::c,
protocol::ssl, role::devel-lib, security::cryptography
Download-Size: 1,797 kB
APT-Sources: http://ftp.fr.debian.org/debian unstable/main amd64 Packages
Description: Secure Sockets Layer toolkit - development files
This package is part of the OpenSSL project's implementation of the SSL
and TLS cryptographic protocols for secure communication over the
Internet.
.
It contains development libraries, header files, and manpages for libssl
and libcrypto.
N: There is 1 additional record. Please use the '-a' switch to see it
去官网下载你需要的版本的源码然后解压更新包,执行如下命令 ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl ,-rpath,/usr/local/ssl/lib 共享
因为默认是只生成静态库,如果想要动态库,添加“共享”选项
制作 && 制作安装
make install
,一只小猫死去...如果您对仓库中的软件包不满意,最好使用checkinstall
。
sudo apt-get install libcurl4-openssl-dev
不定期副业成功案例分享
apt install
用于新的 dist ubuntu