簡體   English   中英

在mac上安裝GNU GCC

[英]Install GNU GCC on mac

我最近對Xcode 5中包含的新的clang編譯器感到沮喪。我想知道在OS X上安裝GNU GCC的最佳方法是什么。

需要考慮的事項:

  • 我不想使用MacPorts,fink,自制軟件或任何其他第三方軟件包管理器。
  • 如果可能的話,我想使用從源代碼編譯的最新GCC。
  • 我需要現有的GCC(硬鏈接到clang)作為默認值,但是在我需要時可以輕松地使用GNU GCC。
  • 如果可能的話,我想避免修改代碼。

編輯:成功! 使用GCC 4.9.2(使用GMP 5.1.3,MPFR 3.1.2,MPC 1.0.2,ISL 0.12.2和CLooG 0.18.1),我成功構建了GCC。 從這里獲取的提示:

  • 確保使用ISL和CLooG。 是的,它們是可選的,但它們是一個更優化的編譯器,我在沒有它們的情況下構建很困難。 確保使用ISL 0.12, 而不是最新版本(0.14)。
  • 如果可能,請使用獨立的開發人員工具, 而不是 XCode。 (XCode有一些錯誤的標題,雖然我沒有注意到構建GCC的任何問題,但我遇到了其他軟件(例如GPG)的問題)。
  • 我建議將所有源代碼放在gcc目錄中,而不是單獨構建和安裝(這種方式更快)
  • 確保使用CC=clang CXX=clang++調用configure ,以便GCC知道它不是由GCC編譯的。
  • 當然,絕對肯定會使用-j8調用make ,否則構建將花費大約4個小時! (使用-j8 ,我的2012年中期MBP需要1 1/3小時,內存為8GB。)( make -j8表示make可以同時構建8個線程(4個核心+ HT),而在2核機器上,你會運行make -j4 。)

希望這可以幫助!

我這樣做的方式是:

  1. 下載GCC的源代碼和眾多支持包。 說明位於GCC源代碼中的gcc-4.xy/INSTALL/index.html文件中,或者位於http://gcc.gnu.org/install/上

  2. 使用腳本將GCC和支持庫的源提取到目錄中,創建對象目錄,然后運行構建。

這是我用於GCC 4.8.2的腳本:

GCC_VER=gcc-4.8.2
tar -xf ${GCC_VER}.tar.bz2 || exit 1

(
cd ${GCC_VER} || exit

cat <<EOF |
    cloog 0.18.0 tar.gz 
    gmp 5.1.3 tar.xz 
    isl 0.11.1 tar.bz2 
    mpc 1.0.1 tar.gz 
    mpfr 3.1.2 tar.xz
EOF

while read file vrsn extn
do
    (
    set -x
    tar -xf "../$file-$vrsn.$extn" &&
    ln -s "$file-$vrsn" "$file"
    )
done
)

mkdir ${GCC_VER}-obj
cd ${GCC_VER}-obj
../${GCC_VER}/configure --prefix=$HOME/gcc/gcc-4.8.2
make -j8 bootstrap

完成后,也運行安裝。 然后在/usr/bin之前將$HOME/gcc/gcc-4.8.2/bin (您在--prefix plus /bin指定的名稱)添加到PATH。

有了一個體面的MacBook Pro有一個5400轉的旋轉盤,它需要一兩個小時來編譯一切(使用-j8選項make ),需要的磁盤空間多千兆字節,而編譯。 SSD這樣做很好(絕對更快)!


GCC 4.9.0於2014-04-22發布。 我使用基本相同的過程安裝它,但使用CLooG 0.18.1和ISL 0.12.2(必需更新)和GMP 5.1.3(和6.0.0a),MPC 1.0.2(或1.0.1)和MPFR 3.1.2在Mac OS X 10.9.2 Mavericks和Ubuntu 12.04衍生產品上。 請注意gmp-6.0.0a.tar.xz提取到目錄gmp-6.0.0 (不是你gmp-6.0.0a )。


2014年至2017年3月27日期間,我建立了GCC版本4.9.0,4.9.1,5.1.0,5.2.0,5.3.0,6.1.0,6.2.0,6.3.0,7.1.0對於macOS Sierra上的GCC 7.2.0,下面顯示的構建腳本只有很小的變化(10.12)。 輔助庫的版本經常變化。


macOS Sierra和High Sierra

在2017-08-14,我使用上面腳本的一個小變體在macOS Sierra 10.12上構建GCC 7.2.0(使用XCode 8作為引導程序編譯器)。 一個變化是似乎不再需要CLooG(我停止使用GCC 6.2.0添加它)。 這是我目前的腳本:

#!/bin/bash

#export DYLD_LIBRARY_PATH=$(clnpath $(dirname $(dirname $(which g++)))/lib:$DYLD_LIBRARY_PATH)
unset DYLD_LIBRARY_PATH

TAR=/opt/gnu/bin/tar
VER_NUM=7.2.0
GCC_VER=gcc-${VER_NUM}
TGT_BASE=/opt/gcc
TGT_DIR=${TGT_BASE}/v${VER_NUM}
CC=/usr/bin/clang
CXX=/usr/bin/clang++

extract() {
    echo "Extract $1"
    $TAR -xf $1
}

if [ ! -d "$GCC_VER" ]
then extract ${GCC_VER}.tar.xz || exit 1
fi

(
cd ${GCC_VER} || exit

nbncl <<EOF |
    gmp     6.1.2   tar.lz 
    isl     0.16.1  tar.bz2 
    mpc     1.0.3   tar.gz 
    mpfr    3.1.5   tar.xz
EOF

while read file vrsn extn
do
    tarfile="../$file-$vrsn.$extn"
    if [ ! -f "$tarfile" ]
    then echo "Cannot find $tarfile" >&2; exit 1;
    fi
    if [ ! -d "$file-$vrsn" ]
    then
        (
        set -x
        extract "$tarfile" &&
        ln -s "$file-$vrsn" "$file"
        ) || exit 1
    fi
done
)

if [ $? = 0 ]
then
    mkdir ${GCC_VER}-obj
    cd ${GCC_VER}-obj
    ../${GCC_VER}/configure --prefix="${TGT_DIR}" \
        CC="${CC}" \
        CXX="${CXX}"
    make -j8 bootstrap
fi

確保你的tar版本支持所有4種不同的壓縮文件格式( .lz.gz.xz.bz2 ),但由於tar的標准Mac版本為我做了這些,它也可能適合你。

在2017-09-27,我無法使用與Sierra 10.12相同的腳本在macOS High Sierra 10.13(使用XCode 9作為引導編譯器)上構建GCC 7.2.0。 即時錯誤是缺少標題<stack> ; 我需要追蹤我的XCode 9安裝是否正確 - 或者更確切地說,為什么它不正確,因為<stack>C ++ 98以后的標准頭 可能很容易解決; 我還沒花時間追逐它。 (是的,我已經多次運行xcode-select --install ;由於網絡故障我不得不多次運行它可能是麻煩的一部分。) (我在2017年成功編譯了GCC 7.2.0 -12-02;我不記得什么樣的體操 - 如果有的話 - 需要它來運作。)

時間流逝; 版本號增加。 但是,基本配方對我來說是最新版本的GCC。 我有7.3.0(安裝2018-01-2),8.1.0(安裝2018-05-02),8.2.0(安裝2018-07-26),8.3.0(安裝2019-03-01)和現在9.1.0(今天安裝,2019-05-03)。 這些版本中的每一個都是在當前版本的macOS上構建和安裝的,使用當前版本的XCode進行自舉階段(因此在構建GCC 9.1.0時使用macOS 10.14.4 Mojave和XCode 10.2.1)

使用專門針對OS X 10.9.x Mavericks的預編譯二進制文件:

gcc-4.9

使用GNU服務器的源代碼編譯。

這包含gfortran(免費,開源,GNU Fortran 95編譯器),gcc(GNU C)和g ++(GNU C ++)編譯器的當前版本(4.7是穩定版本),它們可以執行自動矢量化(即修改代碼以利用AltiVec / SSE,自動)和其他復雜的優化,如OpenMP。 有關詳細信息,請參閱此網頁

下載我的二進制文件,然后cd下載文件夾 然后gunzip gcc-4.9-bin.tar.gz (如果你的瀏覽器還沒有這樣做)然后sudo tar -xvf gcc-4.9-bin.tar -C / 它將所有內容安裝在/ usr / local中 只需鍵入gfortran即可調用Fortran 95編譯器。 您還需要從Mac App Store安裝Apple的XCode Tools。 使用XCode 4或5,您需要下載命令行工具作為附加步驟。 您將在XCode的首選項中找到下載命令行工具的選項。

在10.9 Mavericks上 ,只需輸入xcode-select --install即可獲得命令行工具。

Homebrew現在有了GCC包,所以你可以用這個命令安裝它:

brew install gcc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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