Fråga:
Så här ställer du in gcc 4.8 som standard gcc-kompilator
quine
2013-08-16 09:11:51 UTC
view on stackexchange narkive permalink

Jag installerade nyligen gcc 4.8 med brew OSX 10.7.5 (Lion) . Jag kan nu kompilera med gcc 4.8 genom att använda

  g ++ - 4.8 some_file.c  

eller använda standard gcc 4.2 genom att använda

  g ++ some_file.c  

Jag vill använda gcc 4.8 som standard kompilator för Xcode och om jag skriver gcc på terminalen. Jag antar att jag måste ändra gcc-relaterade länkar inom dirname $ (vilken gcc) .

När jag gör

  ls -al $ (dirname $ (vilken gcc)) | grep 'gcc \ | g ++ \ | c ++'  

Jag får följande:

  lrwxr-xr-x 1 root wheel 7 Jul 31 12:17 c ++ -> clang ++ - rwxr-xr-x 1 root wheel 909360 Nov 18 2011 c ++ filtlrwxr-xr-x 1 root wheel 5 Jul 31 12:17 clang ++ -> clanglrwxr-xr-x 1 root wheel 12 Jul 31 12: 17 g ++ -> llvm-g ++ - 4.2lrwxr-xr-x 1 rothjul 12 jul 31 12:17 gcc -> llvm-gcc-4.2lrwxr-xr-x 1 rothjul 28 jul 31 12:17 gcov-4.2 -> ../llvm-gcc-4.2/bin/gcov-4.2lrwxr-xr-x 1 rothjul 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 rothjul 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 rothjul 32 jul 31 12:17 llvm-cpp-4.2 -> ../llvm-gcc-4.2/bin/llvm-cpp-4.2lrwxr -xr-x 1 rot w häl 32 jul 31 12:17 llvm-g ++ -> ../llvm-gcc-4.2/bin/llvm-g++-4.2lrwxr-xr-x 1 rothjul 31 jul 31 12:17 llvm-g ++ - 4.2 ->. ./llvm-gcc-4.2/bin/llvm-g++-4.2lrwxr-xr-x 1 rothjul 32 jul 31 12:17 llvm-gcc -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2
lrwxr-xr-x 1 rothjul 32 jul 31 12:17 llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2

When I run: vilken gcc-4.8 jag får /usr/local/bin/gcc-4.8.

Steg för att få detta gjort skulle vara till stor hjälp.

Snälla och tack.

Fem svar:
Digitalchild
2013-08-16 09:27:06 UTC
view on stackexchange narkive permalink

Förutsatt att du använder bash (det är standard) kan du lägga till / usr / local / bin som din högsta prioritet i PATH så här:

  echo "PATH = \" / usr / local / bin: $ PATH \ "" >> ~ / .bash_profile  

Detta säkerställer att / usr / local / bin kontrolleras innan alla andra områden på din väg. Starta bara en ny terminalsession för att ladda den nya variabeln.

Ett annat sätt att göra detta:

  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 ++  
För användare på Mac os Catalina eller högre, om du vill ersätta de symboliska länkarna måste du göra [dessa steg] (https://stackoverflow.com/a/59395264/10797718) innan du byter ut dem, och även ditt behov måstegör `sudo rm -rf` inte bara` rm` och `sudo ln` inte bara` ln`
Slutligen lyckas göra det.Jag var också tvungen att köra "csrutil disable" i omstartläge på Mac.
quine
2013-08-17 00:44:57 UTC
view on stackexchange narkive permalink

Tack till er alla för din hjälp. Jag slutade bara med att skapa alias inom ~ / .bash_profile enligt följande:

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

Svaret från Lynken är till stor hjälp, men jag anpassade det med alias eftersom det är lättare för mig att ångra vid behov.

Specifikt om PATH är inställd så att / usr / local / bin (där bryggning sätter länken till gcc 4.8 ) visas innan visas / usr / bin (där gcc är länkat som standard) och sedan skapar länkar som Lyken föreslog i / usr / local / bin kod> ska teoretiskt fungera för mig. I praktiken gör det inte av någon anledning - att misslyckas med ett länkfel och alias kringgår felet utan att jag också behöver lösa problemet.

Den andra fördelen med alias är att jag är att inte behöva länka som jag vill att hembryggare ska hantera och inte behöva tävla med det verktyget för vilken version av gcc som är länkad i /usr/local

ydk2
2014-02-12 09:38:45 UTC
view on stackexchange narkive permalink

Jag använder för att gcc-4.8:

  exportera 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  

och tillbaka till apple gcc:

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

eller lägg det i filen och sedan: källa <file>

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

Låt oss anta att din faktiska skalinitiering görs via ~ / .profile , då måste du ändra den så att / usr / local / bin framför någon annan PATH-komponent där gcc och alla dess tillhörande binära är.

Här är sättet att utföra denna rena modifiering:

 cd_shell_init = `egrep '( ^ |) PATH '.profile 2> / dev / null`if ["$ {_ shell_init}" = ""]; då definieras inte # PATH i .profile # installera den första relativa definitionen av PATH echo 'PATH = / usr / local / bin: $ {PATH} export PATH' >>. profil. .profile exec $ {SHELL} annars # ta bort alla förekomster av / usr / local / bin var de än är # inställda i PATH och sätt in den före alla andra komponenter 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 

Observera: om din ~ / .profile redan är strukturerad, måste detta skalskript justeras manuellt för att passa rätt PATH-definition till höger plats.

Detta är verkligen ** perfekt ** för att ändra 'PATH' så att '/ usr / local / bin' ses först. Detta kommer sannolikt att spara huvudvärk i framtiden. Jag önskar att jag kunde +1. Min fråga är dock att 'gcc' fortfarande är länkad till 'gcc 4.2' och inte 'gcc 4.8' eftersom det inte finns någon symlink för 'gcc -> gcc-4.8' i '/ usr / local / bin'. Jag skulle fortfarande behöva antingen alias `gcc` som` gcc-4.8` inom `~ / .profile` eller symlink (` ln -s gcc-4.8 gcc`) i `/ usr / local / bin` efter uppdatering av` PATH` med ditt manus. Eder?
Jag är förvånad över att "brygga" inte lade till de rätta symboliska länkarna. Läste du detta svar om samma ämne: http://apple.stackexchange.com/a/38247/22003?
Dragonborn
2015-01-11 22:34:22 UTC
view on stackexchange narkive permalink

Det antas att skapandet av alias eller länkning till olika gcc-binärer gör att de använder sin egen inkludera innan standardsystemmappen inkluderar.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...