ฉันจะติดตั้ง GCC ผ่าน Homebrew ได้อย่างไร


79

ฉันใช้Homebrewโดยเฉพาะ (เช่นฉันไม่และไม่ใช้ MacPorts หรือ Fink) ฉันยังต้องการให้การติดตั้งด้วยตนเองมีค่าน้อยที่สุด 1

… แต่ฉันจะติดตั้ง GCC ได้อย่างไร

ก่อนอื่นฉันได้ติดตั้ง Xcode แล้ว แต่เวอร์ชันปัจจุบันไม่ได้มาพร้อมกับ GCC ที่ทันสมัย ​​(ฉันต้องการอย่างน้อย 4.5 แต่ต้องการเวอร์ชั่นล่าสุด) - ในความเป็นจริงมันไม่ได้จัดส่ง ด้วย GCC ที่เหมาะสมเลย (ส่งเฉพาะเสียงดังกราว) และดูเหมือนว่าจะเป็นปัญหาสำหรับ Homebrew ...

ฉันรู้ว่ามีรายการของGCC ที่กำหนดเองและตัวรวบรวมข้ามแต่ที่จริงแล้วการติดตั้งทั้งหมดนั้นต้องการ GCC ที่ติดตั้งแล้ว - อย่างน้อยการติดตั้งbrewเหล่านั้นล้มเหลวเนื่องจากข้อผิดพลาดของลิงเกอร์บน Lion ซึ่งฉันใช้กับ Clang และ-use-gccไม่ทำงาน เหตุผล

brew doctor พูดถึงสิ่งที่ฉันรู้แล้วเท่านั้นว่าไม่มีการติดตั้ง GCC (4.2.x)


1ฉันเคยผสม MacPort, Homebrew และการติดตั้งด้วยตนเองมาก่อนและได้จบลงด้วยการบำรุงรักษาและการกำหนดเวอร์ชัน ฉันไม่ต้องการไปที่นั่นอีก


ผลลัพธ์ของgcc --versionอะไร ฉันได้รับ i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)และฉันเพียงแค่ติดตั้ง Xcode จาก MAS เอาท์พุทของecho $PATHคืออะไร?
Gio

@Gio ฉันได้รับผลลัพธ์เดียวกัน $PATHเป็นเรื่องปกติ (นี่เป็นระบบที่ว่างเปล่าเกือบทั้งหมด): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin... แต่ฉันไม่คิดว่ามันจะสำคัญ สูตรที่จัดทำโดย homebrew-alt นั้นล้าสมัยและไม่สามารถใช้กับเสียงดังกราวได้
Konrad Rudolph

1
เหตุใดจึงต้องใช้ Homebrew MacPorts สามารถจัดการคอมไพเลอร์หลายเวอร์ชันได้ดี และ MacPort สามารถทำอะไรก็ได้ที่ Homebrew สามารถทำได้
Jeff Burdges

@JeffBurdges Homebrew ดีกว่า ในหมวดหมู่ใดสวยมาก
Konrad Rudolph

2
งั้นเหรอ ความจริงแล้วฉันไม่ชอบ Homebrew ส่วนใหญ่เพียงเพราะมันขาด (a) คำอธิบายแพ็กเกจและ (b) แพ็คเกจคณิตศาสตร์ MacPort โดยรวมอาจมีแพ็คเกจมากกว่า Homebrew ถึงหกเท่า แต่ใช่ว่าเป็นแพ็คเกจที่คลุมเครือที่ขาดหายไป ฉันมีความสุขกับ MacPorts โดยรวมถึงแม้ว่าฉันจะหวังว่าพวกเขาจะรวมเข้ากับผู้จัดการแพ็คเกจภาษาเช่น CPAN, CTAN, Caball และอื่น ๆ อีกมากมาย
Jeff Burdges

คำตอบ:


30

วิธีการแก้ปัญหาให้โดย @Konrad รูดอล์ฟไม่ถูกต้องทั้งหมดอีกต่อไปเป็นสูตร GCC ว่าเขากล่าวถึงถูกย้ายจากไปhomebrew/dupes homebrew/versionsคุณสามารถเลือกเวอร์ชันของ GCC ที่จะติดตั้ง ตัวอย่างเช่นในขณะที่เขียนคำตอบนี้จะมีรุ่น 4.5, 4.7 และ 4.8 คุณอาจจะตรวจสอบสิ่งที่รุ่นที่มีอยู่ที่นี่

ในระยะสั้นคุณสามารถติดตั้ง GCC 4.8 โดยใช้

brew tap homebrew/versions
brew install [flags] gcc48

คุณสามารถดูสถานะการติดตั้งที่มีอยู่โดยใช้

brew options gcc48

ฉันลองสิ่งนี้และฉันได้รับมันเพื่อติดตั้ง แต่มันก็ตายแบบนี้:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P

@WarrenP คุณติดตั้งด้วย[flags]หรือไม่? บนเครื่องของฉันฉันติดตั้งโดยไม่มีค่าสถานะใด ๆ และทำงานได้ดี ทำไมไม่ลองโทรgcc-4.8โดยไม่มีไฟล์อินพุตและดูว่าคุณได้รับข้อผิดพลาดร้ายแรงหรือไม่? ลองls /usr/local/Cellar/gcc48/4.8.0/binและดูว่าไดเรกทอรีนั้นมีgcc-4.8อยู่หรือไม่
yihangho

มันประกอบด้วย gcc-4.8 และgcc-4.8 --versionทำงาน แต่มันไม่สามารถเอ็กซีคิ้วท์กับเครื่องมือรองที่ตั้งชื่อasและมันก็ตาย
Warren P

อืม ... ตรงไปตรงมาข้าไม่รู้ว่าจะแก้ยังไง บางทีเราต้องรอผู้ใช้ที่มีประสบการณ์มากกว่านี้ ...
yihangho

2
@nkint ทั้งที่หรือเพิ่มในของคุณalias g++='g++-4.8' .bashrc
yihangho

38

วิธีแก้ไขปัญหา Homebrew

ที่จะตอบคำถามของตัวเองhomebrew-versionsตอนนี้มีเป็นธรรมถึงวันสูตรของ GCC สามารถติดตั้งได้โดยใช้

brew install [flags] https://raw.github.com/Homebrew/homebrew-versions/gcc48.rb

ที่ไหน[flags]ควรจะรวมถึงทุกภาษาที่จำเป็นเช่น ( --enable-cxx --enable-fortran)

นี้จะติดตั้งไฟล์ปฏิบัติการที่มีคำต่อท้ายนั่นคือgccจะต้องเข้าถึงได้gcc-versionเพื่อหลีกเลี่ยงการปะทะกัน หากจำเป็นเราสามารถสร้าง symlink ที่เหมาะสมเพื่อทำให้รุ่นนี้เป็นค่าเริ่มต้น

คู่มือการติดตั้ง

อีกวิธีหนึ่งคือการGCC up-to-วัน ( ณ เวลาที่เขียน) สามารถรวบรวมด้วยตนเองโดยใช้เชลล์สคริปต์ต่อไปนี้:

VERSION=4.7.0
PREFIX=/usr/gcc-$(VERSION)
LANGUAGES=c,c++,fortran
MAKE=make
# Or
# MAKE='make -j 4' # to compile using four cores

brew-path() { brew info $1 | head -n3 | tail -n1 | cut -d' ' -f1; }

# Prerequisites

brew install gmp
brew install mpfr
brew install libmpc

# Download & install the latest GCC

mkdir -p $PREFIX
mkdir temp-gcc
cd temp-gcc
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz
tar xfz gcc-$VERSION.tar.gz
rm gcc-$VERSION.tar.gz
cd gcc-$VERSION

mkdir build
cd build

../configure \
   --prefix=$PREFIX \
   --with-gmp=$(brew-path gmp) \
   --with-mpfr=$(brew-path mpfr) \
   --with-mpc=$(brew-path libmpc) \
   --program-suffix=-$VERSION \
   --enable-languages=$LANGUAGES \
   --with-system-zlib \
   --enable-stage1-checking \
   --enable-plugin \
   --enable-lto \
   --disable-multilib

$MAKE bootstrap

make install

# Uncomment for cleanup …
# cd ../../..
# rm -r temp-gcc

นี้จะเป็นเวที GCC /usr/gcc-4.7.0เข้าไปในเส้นทาง ตอนนี้สิ่งที่คุณต้องทำคือสร้าง symlink ให้กับ executables หรือเพิ่มbinไดเรกทอรีลงใน$PATHตัวแปร


1
พยายามรวบรวมไวน์รุ่นที่ใช้งานได้ฉันก็เจอปัญหา gcc ที่หายไป - แต่น่าเสียดายที่การติดตั้ง v4.7 ผ่าน homebrew ทำให้ฉันมีข้อผิดพลาด ดังนั้นฉันไปสำหรับ v4.2 แอปเปิ้ลใช้ตามด้วยbrew tap homebrew/dupes brew install apple-gcc42สิ่งนี้ช่วยให้ฉันได้รับ gcc และไวน์ที่ทำงาน นอกจากนี้คุณยังสามารถรับไบนารี (เหมือนที่ homebrew ทำ) จากที่นี่: r.research.att.com/tools
iolsmit

@iolsmit คุณควรลองติดตั้ง GCC 4.7 อีกครั้งด้วย Homebrew ที่สะอาดและทันสมัย มันควรจะทำงานเหมือนมีเสน่ห์ ถ้าไม่ได้โปรดยื่นข้อผิดพลาดไปยังผู้ดูแล Homebrew-dupes
Konrad Rudolph

3
brew tap homebrew/dupes; brew install gcc --use-llvm. ดูgithub.com/Homebrew/homebrew-dupes/issues/20
PHS

@ KonradRudolph ทุกที่ฉันหันคุณตอบคำถามที่ฉันถาม! ขอบคุณ :)
Rik Smith-Unna

1
@Warren ไม่จำเป็นต้องตะโกน - แต่ขอบคุณสำหรับการเตือนเพราะ yihang ได้โพสต์คำตอบล่าสุดที่ดีกว่าซึ่งตอนนี้ฉันยอมรับแล้ว
Konrad Rudolph

13

ฉันเห็นใครบางคนเชื่อมโยงไปยังโพสต์เก่านี้ในวันนี้ วิธีที่ดีที่สุดในการติดตั้ง GCC ใน homebrew brew install gccในขณะนี้เป็นเพียง หากคุณมีเครื่องมือบรรทัดคำสั่ง XCode (เครื่องมือเหล่านี้แยกต่างหากจาก XCode คุณสามารถติดตั้งได้xcode-select --install) การติดตั้งรุ่นที่คอมไพล์แล้ว (ซึ่งเร็วมาก)


3

ฉันก็มีปัญหานี้เช่นกัน มีอะไรเพิ่มเติมที่ฉันต้องใช้ gfortran ซึ่งไม่ได้มาพร้อมกับมาตรฐาน (ล้าสมัย) การติดตั้งของ llvm-gcc ของ Mac

ฉันพบคอมพิวเตอร์ประสิทธิภาพสูงสร้าง gcc ให้ทันสมัยและทำงานได้ดีกับ Lion


ฉันลองสิ่งนี้ ไม่เพียง แต่ใช้งานไม่ได้ แต่เทคนิคการติดตั้งที่เขาใช้นั้นค่อนข้างอันตราย ใช้เวลาประมาณหนึ่งชั่วโมงในการเลิกทำทุกอย่างอย่างระมัดระวัง
Bob Aman

2
โอ้ฉันควรจะบอกว่าฉันไม่ได้ติดตั้งตามที่เขาแนะนำ ฉันเพิ่งปลดไฟล์และสร้าง symlink ให้กับไบนารีที่ฉันต้องการตรวจสอบให้แน่ใจว่า symlink นั้นอยู่ใน PATH ของฉัน โดยปกติแล้วสิ่งนี้จะทำโดยการเพิ่มบางสิ่ง "ท้องถิ่น" ในเส้นทางของฉันเช่น ~ / bin / หรือบางสิ่งบางอย่าง
cm2

ใช่ว่าจะมีสติมากขึ้น ขั้นตอนการติดตั้งของเขานั้นบ้าถั่วและฉันควรคิดเอาเองมากกว่าจะให้มันสุ่มสี่สุ่มห้า
Bob Aman

3

ในกรณีที่คนดูที่หัวข้อเก่านี้ดูเหมือน homebrew / รุ่นที่ใช้ในคำตอบที่ได้รับการยอมรับในปัจจุบันได้รับการเลิกในความโปรดปรานของhomebrew / หลัก brew install <formula>เพียงแค่เรียกใช้


คุณกรุณาอธิบายว่าสิ่งนี้เกี่ยวข้องกับคำถามของ OP ซึ่งเป็นวิธีการติดตั้ง GCC ผ่าน Homebrew ได้อย่างไร
fsb

@fsb คำตอบได้รับการปรับปรุง
Avi

นี่เป็นความคิดเห็นเพิ่มเติมเกี่ยวกับคำตอบที่ยอมรับ มันไม่ควรเป็นคำตอบเพราะมันไม่ได้ตอบคำถาม OPs เมื่อคุณมีชื่อเสียงเพียงพอคุณจะสามารถเพิ่มความคิดเห็นและถามคำถามติดตามผล ที่จะได้รับชื่อเสียงตอบคำถามที่มีความชัดเจนและรัดกุม
fsb

ควรถามคำถามใหม่เพื่อระบุเวอร์ชันของการชงที่เปลี่ยนแปลงนี้หรือไม่ การแก้ไขโพสต์เก่านี้มีประโยชน์น้อยความล่าช้าสูง
bmike

หากฉันมีคะแนนชื่อเสียงเพียงพอฉันจะแสดงความคิดเห็นในโซลูชันที่ได้รับการยอมรับแทน รู้สึกอิสระที่จะทำเอง
Avi

0

คุณอาจลองทำสิ่งนี้ - https://github.com/kennethreitz/osx-gcc-installer - ฉันใช้มันสำเร็จหลังจากอัปเกรดเป็น Lion เพื่อรวบรวมแพ็คเกจด้วย Homebrew และอื่น ๆ (Ruby)

จากการอ่านฉัน:

ตัวติดตั้ง OSX GCC การ ดาวน์โหลดและติดตั้งตัวติดตั้ง Xcode ขนาดใหญ่นั้นเป็นเรื่องยุ่งยากอย่างมากหากคุณต้องการ GCC และเครื่องมือที่เกี่ยวข้อง

osx-gcc-installer ช่วยให้คุณติดตั้งคอมไพเลอร์ที่จำเป็นจากแพ็คเกจไบนารีที่สร้างไว้ล่วงหน้าหรือช่วยคุณสร้างโปรแกรมติดตั้งของคุณเอง


สิ่งนี้จะติดตั้งเฉพาะเวอร์ชันที่ติดตั้งโดย Xcode ด้วย ในคำอื่น ๆ : ล้าสมัยและไม่จริง GCC แต่ LLVM-GCC
Konrad Rudolph

1
ล้าสมัย: ใช่ จุดของแพ็กเกจคือมันเป็น Xcode ส่งสาธารณูปโภค แต่ไม่มีส่วนประกอบขนาดใหญ่อื่น ๆ ที่จำเป็นสำหรับ Xcode ไม่ใช่ GNU GCC: ผิด /usr/bin/gccเป็น symlink ไปยัง llvm gcc แต่การอ้างอิง/usr/bin/gcc-4.2หรือการตั้งค่าexport CC="gcc-4.2"ใน. bash_profile หรือไฟล์ที่เหมาะสมของคุณช่วยบรรเทาปัญหาได้เช่นกัน (ดูเพิ่มเติมที่นี้กองมากเกินคำถาม.)
เจสัน Salaz

2
โปรดทราบว่าโครงการนี้ถูกแทนที่โดยเครื่องมือบรรทัดคำสั่งอย่างเป็นทางการของ Apple สำหรับ Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.