ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Ubuntu 上安装 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 包不包含该库。我在制作时收到这些错误:

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++ 和(在“链接选项”下),它指出:“链接器搜索库的标准目录列表......”和“搜索的目录包括几个标准系统目录。 ..” 那些标准系统目录是什么?

不完全重复,但由 What are *-devel packages? 回答。
您对 -dev 命名约定是正确的。您还可以使用 synaptic 包管理器列出名称包含 libssl 的所有包 - 浏览该列表及其描述可能会给您提供线索。
我知道这个问题现在已经死了,但是自从我最近发现它以来,我认为其他人也可能会这样做。如果要列出与某个名称相似的所有包,我喜欢使用 >aptitude search 它不需要 root 权限级别来运行搜索。
只是为了补充 Evan 的声明,最新版本的 Ubuntu 即将推出,但没有可用的 aptitude 命令。 apt-cache search 现在(几乎)以相同的方式工作。
在回答您的更新时,您可以执行 apt-cache search package-name

N
Niki Yoshiuchi

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

sudo apt-get install libssl-dev

但这不是他想要的版本(1.0.0),没有为10.04打包。请参阅 1.0.0 的此答案:stackoverflow.com/questions/3153114/…
啊,好电话。我当时只注意到他正在尝试使用开发库但没有安装 -dev 包。我什至没有注意到版本号。
这是正确的参考:安装后在同一目录下找到 technologyskill.ga/install-openssl-manually-on-linuxhowtoforge.com/tutorial/… 库和头文件:/usr/local/ssl
apt install 用于新的 dist ubuntu
@GeorgeSp 我认为是这样,但使用此指令在自定义目录中构建它们仍然更“自然”stackoverflow.com/a/49578644/7315276
P
Paul Rooney

跑:

apt-get install libssl-dev

G
Guy Avraham

我怎么能自己弄清楚(除了在这里问这个问题)?我可以以某种方式告诉 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 支持的命令列表。


Ubuntu 可以减轻人们的痛苦,因为它多年来一直是个问题。他们可以openssl-dev 别名为 libssl-dev,但他们选择不这样做。
I
Irexiz

我在这里找到了详细的解决方案: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


为了完整起见,您应该包括 PGP 签名验证以确保文件签名有效。如 gnupg.org/download/integrity_check.htmlopenoffice.org/download/checksums.html#pgp_linux
K
Kalle Richter

在 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

J
Jesse Nickles

所有这些答案都非常过时,并且从软件包仍在开发时开始。您现在可以使用下面列出的“正常”命令:

sudo apt install openssl

如果这是让我有 1000+ 业力的答案,我会大声笑
这是一个错误的答案,顺便说一句
N
Nursnaaz

您需要 openssl-devel 包。至少我认为它是 Ubuntu 上的 -devel。可能是-dev。它是两者之一。


sudo apt-get install openssl-devsudo apt-get install openssl-devel 都返回“E:找不到包...”
正如其他人所说,显然它是 libssl-dev 。我不使用 Ubuntu,所以我不熟悉包名称。
Openssl-devel 是 CentOS 6 所需要的。sudo yum install openssl-devel*
老实说:这个命名很烂:)
好吧,这个命名很烂:) - 但它仍然是我们可以拥有的最好的命名标准......但真的应该有人最终开始在世界上所有学校的学校科目“IT基础知识”中教授这个。
V
Vincent Fourmond

作为一般规则,当您在 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

J
JK.Tang

去官网下载你需要的版本的源码然后解压更新包,执行如下命令 ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl ,-rpath,/usr/local/ssl/lib 共享

因为默认是只生成静态库,如果想要动态库,添加“共享”选项

制作 && 制作安装


每次您make install,一只小猫死去...如果您对仓库中的软件包不满意,最好使用checkinstall
N
Nursnaaz

sudo apt-get install libcurl4-openssl-dev