題:
如何將gcc 4.8設置為默認gcc編譯器
quine
2013-08-16 09:11:51 UTC
view on stackexchange narkive permalink

我最近在 OSX 10.7.5(Lion)上使用 brew 安裝了 gcc 4.8 。我現在可以通過使用

  g ++-4.8 some_file.c  

或使用默認的來使用 gcc 4.8 進行編譯使用

  g ++ some_file.c  

我想使用 gcc 4.8 作為默認編譯器Xcode ,如果我在終端輸入 gcc 。我想我必須更改 dirname $(哪個gcc)中與 gcc相關的鏈接。

當我這樣做

  ls -al $(目錄名$(其中gcc))| grep'gcc \ | g ++ \ | c ++' 

我得到以下信息:

  lrwxr-xr-x 1根輪7 Jul 31 12:17 c ++ -> clang ++-rwxr-xr-x 1根齒輪909360 2011年11月18日c ++ filtlrwxr-xr-x 1根齒輪5 Jul 31 12:17 clang ++ -> clanglrwxr-xr-x 1根齒輪12 Jul 31 12: 17 g ++ -> llvm-g ++-4.2lrwxr-xr-x 1根輪12 Jul 31 12:17 gcc -> llvm-gcc-4.2lrwxr-xr-x 1根輪7月28日12:17 gcov-4.2 -> ../llvm-gcc-4.2/bin/gcov-4.2lrwxr-xr-x 1根輪52 Jul 31 12:17 i686-apple-darwin11-llvm-g ++-4.2 -> ../llvm-gcc-4.2/ bin / i686-apple-darwin11-llvm-g ++-4.2lrwxr-xr-x 1根輪52 Jul 31 12:17 i686-apple-darwin11-llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin /i686-apple-darwin11-llvm-gcc-4.2lrwxr-xr-x 1根輪32 Jul 31 12:17 llvm-cpp-4.2 -> ../llvm-gcc-4.2/bin/llvm-cpp-4.2lrwwxr -xr-x 1根w鞋跟32 Jul 31 12:17 llvm-g ++ -> ../ llvm-gcc-4.2 / bin / llvm-g ++-4.2lrwxr-xr-x 1根輪32 Jul 31 12:17 llvm-g ++-4.2 ->。 ./llvm-gcc-4.2/bin/llvm-g++-4.2lrwxr-xr-x 1根輪32 Jul 31 12:17 llvm-gcc -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2
lrwxr-xr-x 1根輪32 Jul 31 12:17 llvm-gcc-4.2 -> ../ llvm-gcc-4.2 / bin / llvm-gcc-4.2  

當我運行:哪個gcc-4.8 我得到 /usr/local/bin/gcc-4.8

完成此操作的步驟將非常有幫助。

請謝謝。

五 答案:
Digitalchild
2013-08-16 09:27:06 UTC
view on stackexchange narkive permalink

假設您正在使用bash(這是默認設置),則可以將/ usr / local / bin作為PATH的最高優先級,如下所示:

  echo“ PATH = \” / usr / local / bin:$ PATH \“” >>〜/ .bash_profile  

這將確保在路徑的所有其他區域之前檢查/ usr / local / bin。然後,只需啟動一個新的終端會話以加載新變量。

另一種方法:

  cd / usr / bin rm cc gcc c ++ g ++ ln -s /usr/local/bin/gcc-4.8 cc ln -s /usr/local/bin/gcc-4.8 gcc ln -s /usr/local/bin/c++-4.8 c ++ ln -s /usr/local/bin/g++-4.8 g ++  
對於Mac os Catalina或更高版本上的用戶,如果要替換符號鏈接,則需要在替換它們之前執行[這些步驟](https://stackoverflow.com/a/59395264/10797718),並且您還需要做sudo rm -rf不僅是rm和sudo ln不簡單是ln
最終設法做到這一點。我還必須在Mac的重啟模式下運行`csrutil disable`。
quine
2013-08-17 00:44:57 UTC
view on stackexchange narkive permalink

感謝大家的幫助。我最終只是在〜/ .bash_profile 中創建別名,如下所示:

  alias gcc ='gcc-4.8'alias cc ='gcc-4.8'alias g ++ = 'g ++-4.8'alias c ++ ='c ++-4.8' 

Lynken的答案非常有幫助,但我使用別名對其進行了修改,因為如果需要,我可以更輕鬆地撤消。

具體來說,如果將 PATH 設置為 / usr / local / bin (其中brew將鏈接設置為 gcc 4.8 >)出現在 / usr / bin (默認情況下鏈接了 gcc )之前,然後按照Lyken建議在 / usr / local / bin 代碼>理論上應該對我有用。實際上,這並不是出於某種原因-出現鏈接器錯誤,別名也可以解決該錯誤,而無需我也需要解決該問題。

別名的另一個好處是,我不必鏈接我希望自製軟件處理的鏈接,也不必與在 / usr / local

中鏈接了gcc版本的工具競爭
ydk2
2014-02-12 09:38:45 UTC
view on stackexchange narkive permalink

我使用gcc-4.8:

  export CC = / usr / local / bin / gccexport CXX = / usr / local / bin / g ++ export CPP = / usr / local / bin / cppexport LD = / usr / local / bin / gccalias c ++ = / usr / local / bin / c ++ alias g ++ = / usr / local / bin / g ++ alias gcc = / usr / local / bin / gccalias cpp = / usr / local / bin / cppalias ld = / usr / local / bin / gccalias cc = / usr / local / bin / gcc  

並返回到蘋果gcc:

  export CC = / usr / bin / gccexport CXX = / usr / bin / g ++ export CPP = / usr / bin / cppexport LD = / usr / bin / ldalias c ++ = / usr / bin / c ++別名g ++ = / usr / bin / g ++別名gcc = / usr / bin / gccalias cpp = / usr / bin / cppalias cc = / usr / bin / gccalias ld = / usr / bin / ld  

或將其放入文件中,然後: source <file>

dan
2013-08-16 12:57:49 UTC
view on stackexchange narkive permalink

假設您實際的shell初始化是通過〜/ .profile 完成的,那麼您將必須對其進行修改,以便將 / usr / local / bin 放在前面 gcc 及其所有相關二進製文件所在的任何其他PATH組件。

這是執行此乾淨修改的方法:

 cd_shell_init =`egrep'( ^ |)PATH'.profile 2> / dev / null`if [“ $ {_ shell_init}” =“”];然後#profile中未定義PATH。#在其中安裝PATH echo的第一個相對定義'PATH = / usr / local / bin:$ {PATH} export PATH'>>。profile。 .profile exec $ {SHELL} else#刪除/ usr / local / bin中所有可能出現的位置,將它們設置在PATH中,並將其插入到所有其他組件之前sed -E -e'/(^ |)PATH = / s,:/ usr / local / bin,'\ -e'/(^ |)PATH = / s,/ usr / local / bin :,'\ -e'/(^ |)PATH = / s, ,&// usr / local / bin :,'.profile> .profile.new mv .profile.new .profile。 .profile exec $ {SHELL} fi 

請注意:如果您的〜/ .profile 已經結構化,則必須手動調整此Shell腳本以適合右側的正確PATH定義。地方。

對於修改PATH來說,這肯定是“完美”的,因此首先會看到/ usr / local / bin。將來這可能使我免於頭痛。希望我可以+1。我的問題是,`gcc`仍然鏈接到`gcc 4.2`而不是`gcc 4.8`,因為在/ usr / local / bin中沒有gcc-> gcc-4.8的符號鏈接。我仍然需要在更新〜PATH之後在`〜/ .profile`中將`gcc`命名為`gcc-4.8`或`/ usr / local / bin`中的符號鏈接(`ln -s gcc-4.8 gcc`)。與您的腳本。是啊
我很驚訝`brew`沒有添加正確的符號鏈接。您是否在同一主題上閱讀了此答案:http://apple.stackexchange.com/a/38247/22003?
Dragonborn
2015-01-11 22:34:22 UTC
view on stackexchange narkive permalink

假設在默認系統包含文件夾之前,製作別名或鏈接到不同的gcc二進製文件會使它們使用自己的包含。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...