Mhe*_*eni 1 linux make gcc centos scl
大家好,
我正在尝试在
这个项目上构建一个名为RamCloud 的CentOS Linux release 7.4.1708
项目,特别需要gcc 4.9,而我的 centos 只有gcc 4.8,所以我不得不:
sudo yum remove
--skip-broken gccsudo yum install centos-release-sclsudo yum install devtoolset-3scl 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....
我不确定,但我认为这是一个链接问题,以前有人遇到过吗?
这两个错误都与未安装 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)