Linux

gcc 建構錯誤:找不到 -lssl

  • March 6, 2020

大家好,

我正在嘗試在這個項目上建構一個名為RamCloudCentOS Linux release 7.4.1708
的項目, 特別需要gcc 4.9,而我的 centos 我只有gcc 4.8,所以我不得不:

  • 從我的系統中徹底刪除 gcc4.8sudo yum remove --skip-broken gcc
  • 安裝 sclsudo 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: 等待未完成的工作….

我不確定,但我認為這是一個連結問題,以前有人遇到過嗎?

這兩個錯誤都與未安裝的 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 

在 CentOS 中:

rpm -q -f libssl.a

在 Debian/Ubuntu 中,要安裝它們:

sudo apt-get install libssl-dev

在 CentOS 中,要安裝它們:

sudo yum install openssl-devel

引用自:https://unix.stackexchange.com/questions/423107