[英]check g++ version being used in Makefile
我正在編譯一些開源代碼,它給了我以下錯誤:
g++: error: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o: No such file or directory
這表明所使用的版本是4.1.2
。 但是,當我這樣做時: which g++
,輸出是: /opt/gcc/4.9.2/bin/g++
。 這表明正在使用4.9.2。 我很困惑,有人可以幫助我了解發生了什么嗎? 我沒有做很多的Unix。
您的路徑/opt/gcc/4.9.2/bin/g++
暗示這不是打包到您正在使用的任何Linux發行版(或Unix)中的gcc。 相反,這是gcc的另一版本,與發行版的gcc一起編譯和安裝。 在本地Linux發行版中,gcc的典型路徑是/usr/bin/g++
。
gcc是一個非常大,復雜的軟件包。 預期它會作為本機Linux發行版的一部分進行構建和配置。 當然可以配置和構建其他版本的gcc,以補充Linux發行版隨附的gcc。 我之前已經完成了幾個過程,但這是一個漫長而復雜的痛苦過程。 沒有執行此操作的方法,具體信息取決於主機Linux發行版。
每次都是全新的體驗。 經常,gcc的configure腳本弄錯了一些細節,最后必須修補gcc的configure腳本的某些部分,以使gcc在主機發行版上正確構建。
當出現問題時,您會得到類似這樣的典型結果-斷開的鏈接路徑。 有時您最終會遇到頭文件或其他一些問題。
因此,要構建gcc,不僅要具有豐富的開發經驗,而且還要具有構建大型而復雜的自由軟件包的經驗。 為了構建gcc,還必須對用來構建gcc的GNU工具鏈以及數千種其他免費軟件包具有廣泛的知識和了解: autoconf
, automake
, libtool
,以及(取決於所討論的軟件包)其他一些。
因此,您需要與經驗豐富的系統管理員或開發人員聯系,他們最初是構建您的gcc 4.9.2的自定義安裝並將其安裝在/ opt中的,然后向他們顯示您遇到的此錯誤,並讓他們弄清楚如何gcc配置錯誤,因此最終鏈接錯誤。
一個簡單的解決方案是編譯並運行以下程序:
#include <iostream>
int main()
{
std::cout << __VERSION__ << std::endl;
}
這將打印用於編譯程序的g ++版本。 __VERSION__
是g ++定義的宏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.