gcc 构建错误:找不到-lssl

Mhe*_*eni 1 linux make gcc centos scl


大家好,
我正在尝试在 这个项目上构建一个名为RamCloud 的CentOS Linux release 7.4.1708
项目,特别需要gcc 4.9,而我的 centos 只有gcc 4.8,所以我不得不:

  • 从我的系统中完全删除 gcc4.8 sudo yum remove --skip-broken gcc
  • 安装scl sudo yum install centos-release-scl
  • 安装 包含gcc4.9 的devtoolset-3 sudo yum install devtoolset-3
  • 启用开发工具集 scl enable devtoolset-3 bash

这有助于解决我之前遇到的一些错误,但是现在当我尝试运行sudo make -j12以构建项目时,我收到与devtoolset相关
的错误,这是错误的样子:

/opt/rh/devtoolset-3/root/usr/libexec/gcc/x86_64-redhat-linux/4.9.2/ld: 找不到 -lssl /opt/rh/devtoolset-3/root/usr/libexec/gcc/ x86_64-redhat-linux/4.9.2/ld: 找不到 -lcrypto collect2: 错误: ld 返回 1 退出状态
make: [obj.master/apps/client] 错误 1
make: Waiting for unfinished jobs....

我不确定,但我认为这是一个链接问题,以前有人遇到过吗?

Rui*_*iro 7

这两个错误都与未安装 OpenSSL 开发库有关( -lssl 是一个非常死的让步)。

-lssl可分为-l,意为“链接以”和ssl,这是所需的库GCC被要求在链接。通常情况下,该文件的链接在被命名lib<whatever_comes_after_the_-l>.a,它需要的头。文件和头文件位于 dev(基于 Debian)或 devel(基于 RPM)包中。在这里,ssl -> openssl,但是您需要开发包,因此它是 openssl-dev 或 openssl-devel。

所以现在您可以搜索包含lib<whatever_comes_after_the_-l>.a. 对于基于 Debian 的发行版,我安装apt-file.

在 Debian 中:

apt-file update
apt-file search libssl.a 
Run Code Online (Sandbox Code Playgroud)

在 CentOS 中:

rpm -q -f libssl.a
Run Code Online (Sandbox Code Playgroud)

在 Debian/Ubuntu 中,要安装它们,请执行以下操作:

sudo apt-get install libssl-dev
Run Code Online (Sandbox Code Playgroud)

在 CentOS 中,要安装它们:

sudo yum install openssl-devel
Run Code Online (Sandbox Code Playgroud)