簡體   English   中英

檢查Makefile中使用的g ++版本

[英]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工具鏈以及數千種其他免費軟件包具有廣泛的知識和了解: autoconfautomakelibtool ,以及(取決於所討論的軟件包)其他一些。

因此,您需要與經驗豐富的系統管理員或開發人員聯系,他們最初是構建您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM