Centos6.8 安裝dlib庫時出錯【升級gcc 到4.9.0以上】


在centos6.8上安裝dlib庫時出現錯誤:

1、CMake must be installed to build the following extensions: dlib

  沒有安裝CMake,需要安裝CMake,如 yum install cmake

2、Unsupported compiler -- pybind11 requires C++11 support!

  gcc版本低,centos默認版本為4.4.7,需要升級到4.8以上,因為gcc 4.8.0及以上版本才會支持c++ 11的特性

3、fatal error: Python.h: No such file or directory

  需要安裝python-dev(安裝了python環境為什么還要安裝python-dev,因為linux發行版通常會把類庫的頭文件和相關的pkg-config分拆成一個單獨的xxx-dev(el)包,比如:需要自己安裝一個源外的python類庫, 而這個類庫內含需要編譯的調用python api的c/c++文件則需要安裝python-dev,安裝的dlib需要這個頭文件),Centos安裝 python-dev包提示No package python-dev available:出現此問題的原因是python-dev的包在Centos的yum中不叫python-dev,而是python-devel,所以使用下面的命令即可安裝python-dev, yum install python-devel。

 4、cc1: error: unrecognized command line option "-std=gnu++11"

       升級的gcc沒有生效,需要配置新安裝的gcc的路徑,詳細過程見文尾。

升級gcc

使用yum安裝gcc

對於配備了yum的Linux發行版而言,安裝gcc編譯器就變得so easy。我們只需要分別執行如下命令即可:

1 ##安裝 gcc、c++編譯器以及內核文件
2 yum -y install gcc gcc-c++ kernel-devel

自行安裝gcc

不過使用yum安裝的gcc並非當前的最新版本,Centos6 yum 默認安裝的gcc版本為4.4.7 (gcc 4.8開始全面支持C 11和C++ 11的新特性)。如果我們想要安裝最新版本的gcc,那么就需要自行安裝gcc。

筆者初次安裝gcc時,在網絡上搜尋了大量的gcc安裝配置教程,許多教程的內容非常之多,結果把自己搞暈了,編譯安裝的時候還老是出現各種錯誤。最后查閱官方文檔才發現,自行安裝新版本的gcc並不復雜,根本沒有那些教程中說的那樣繁瑣(有些教程居然還要修改幾個配置文件)。

下載gcc安裝文件

在安裝gcc當然要先拿到gcc的安裝文件。在這里我們直接通過官方下載gcc-4.9.0.tar.bz2(86 MB)。當然,你也可以下載gcc-4.9.0.tar.gz(110 MB),不過該壓縮文件要大出不少。

wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.0/gcc-4.9.0.tar.bz2

 編譯前的准備工作 

想要安裝gcc 4.8及以上版本,你需要先安裝C標准庫和頭文件,以及舊版本的c++編譯器。如果你的計算機中沒有這些,請執行以下命令(當然你也可以使用apt-get等其它方式進行安裝,如果已經安裝則無需再次安裝):

#安裝C和C++的靜態庫
yum install -y glibc-static libstdc++-static
#安裝舊版本的gcc、c++編譯器
yum install gcc gcc-c++

 在這里,我們將gcc-4.9.0.tar.bz2解壓到/usr/local/src目錄中(當然你也可以指定其他目錄),完整的tar命令為: 

#解壓gcc安裝文件
tar jxvf gcc-4.9.0.tar.bz2 -C /usr/local

 解壓后gcc源程序的根目錄就是/usr/local/gcc-4.9.0。接着,我們依次執行如下命令:

#轉到gcc源程序根目錄
cd /usr/local/gcc-4.9.0
#下載一些必備的依賴程序
./contrib/download_prerequisites

 安裝gcc需要下載諸如gmp、mpfr、mpc等依賴文件,執行download_prerequisites將會自動下載這些軟件並解壓到當前目錄(文件不大,總共只有幾MB,請耐心等待下載)。

編譯安裝gcc

接着,就可以對gcc進行編譯安裝了。在此之前,我們先創建一個目錄 mkdir /usr/local/build/gcc-4.9.0(你也可以自行指定其他目錄)用於存放編譯后的程序文件。然后我們依次執行如下命令:

#跳轉到編譯后的程序文件存放目錄
cd /usr/local/build/gcc-4.9.0
#調用gcc源程序的configure(后面的參數選項可根據需要自行修改),用於配置gcc
/usr/local/gcc-4.9.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
#編譯gcc源程序
make
#安裝gcc
make install

 其中執行make命令這一過程耗費的時間可能非常多,筆者這里耗費了20多分鍾才編譯完成。執行完上述命令后,我們的gcc就已經安裝成功了。

與其他教程不同的是,本教程並沒有對gmp、mpfr、mpc等軟件分別進行解壓和編譯,而是直接由download_prerequisites負責下載並解壓,最后和gcc一起進行編譯安裝,這也是官方推薦的做法(download_prerequisites還會根據實際情況決定是否啟用Graphite循環優化)。

如果你的Linux無法直接聯網,那么你只能打開文件download_prerequisites,獲取到這些文件的下載鏈接,然后通過其他上網設備下載這些軟件。最后把這些軟件直接解壓到gcc源程序目錄(/usr/local/src/gcc-4.9.0)下即可。

配置gcc 的路徑:

find / -name "libstdc++.so*"
# cd /usr/lib64
# mv libstdc++.so.6 libstdc++.so.6.old
# cp /usr/src/gcc-6.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 . #將新安裝的gcc文件下的 libstdc++.so.6.0.22 復制到/usr/lib64文件下
# ln -sv libstdc++.so.6.0.22 libstdc++.so.6

查看版本

gcc --version

 

 

 Reference:

[1] https://blog.csdn.net/HEHUANLUOLUO/article/details/79152622

[2] https://robbiefeng.iteye.com/blog/2163305

[3] http://blog.techbeta.me/2015/10/linux-centos6-5-upgrade-gcc/

[4] https://www.linuxidc.com/Linux/2017-10/147256.htm

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM