ฉันจะใช้ GCC ล่าสุดบน Ubuntu ได้อย่างไร


132

gccฉันต้องการที่จะรวบรวมโปรแกรมของฉันกับรุ่นล่าสุดของ

Ubuntu 14.04 มาพร้อมกับ GCC 4.8.2 แต่มี 4.9.0 gcc-4.9ใช้ได้นอกจากนี้ผมเห็นว่ามันสามารถใช้ได้เป็นแพคเกจ: ฉันพยายามติดตั้ง

sudo apt-get install gcc-4.9

แต่มันบอกว่า

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'gcc-4.9-base' for regex 'gcc-4.9'
gcc-4.9-base is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

ดูเหมือนว่าติดตั้งไว้แล้วไม่ใช่เป็นค่าเริ่มต้นใช่หรือไม่ ฉันจะใช้มันเพื่อสร้างโปรแกรมของฉันได้อย่างไร


หากคุณต้องการที่จะติดตั้งgcc-4.8, sudo apt-get install gcc-4.8คุณจำเป็นต้องใช้ gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6ทั้งหมดที่อยู่ในอูบุนตู repo

1
@Dumindu แต่ฉันจะใช้gcc-4.9เฉพาะได้อย่างไร
Nickolai Leschov

ถอนการติดตั้งอื่น ๆ และติดตั้ง 4.9

2
@Dumindu เดี๋ยวก่อนคุณแค่บอกให้ฉันทำสิ่งที่ฉันเพิ่งทำไปรึเปล่า? มันไม่ทำงาน.
Nickolai Leschov

สลับไปที่ผู้ใช้รูท: sudo su -กลับไป/usr/binแล้วรันls -l gcc*และโพสต์เอาต์พุตของคุณ แล้วฉันจะโพสต์คำตอบของคุณ
αғsнιη

คำตอบ:


196

วิธีที่ดีที่สุดในการติดตั้ง gcc-4.9 อย่างถูกต้องและตั้งเป็นรุ่น gcc เริ่มต้นของคุณ:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9

สาเหตุ--slaveด้วยg++จะทำให้g++ถูกเปลี่ยนพร้อมกับgccเป็นเวอร์ชันเดียวกัน แต่ ณ จุดนี้ gcc-4.9 จะเป็นรุ่นเดียวที่คุณกำหนดค่าupdate-alternativesดังนั้นควรเพิ่ม 4.8 ลงไปupdate-alternativesดังนั้นจึงมีทางเลือกอื่นโดยใช้:

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8

จากนั้นคุณสามารถตรวจสอบว่ามีการตั้งค่าใดและเปลี่ยนไปมาโดยใช้:

sudo update-alternatives --config gcc

หมายเหตุ: คุณสามารถข้ามการติดตั้ง PPA Repository และเพียงแค่ใช้/usr/bin/gcc-4.9-baseแต่ฉันชอบที่จะใช้ toolchains ที่ปรับปรุงใหม่


สำหรับ GCC 5.X หรือ 6 แพ็คเกจ (และตามลำดับคำสั่ง) จะถูกเรียกใช้gcc-5และgcc-6อื่น ๆ นี่เป็นเพราะการเปลี่ยนแปลงในรูปแบบของ GCCซึ่ง 5.1 เป็นรุ่นแรกของ GCC 5 และรุ่น 5.X ในอนาคต มีการแก้ไขข้อผิดพลาด


ขอบคุณสำหรับการแก้ไข @muru ... เหมือนที่ฉันพูดด้านล่างฉันรู้สึกเหนื่อยประมาณ 3 วันและการปรับปรุงทางเลือกต้องใช้ sudo และฉันคิดว่าฉันลืม (-) ก่อนหน้าทาส :) ขอบคุณ
SudoSURoot

ลองsudo apt-get -f install
SudoSURoot

4
มันทำงานได้อย่างสมบูรณ์แบบ นอกจากนี้ใช้แทน5เพื่อ4.9ให้ GCC 5 ทำงานบน Ubuntu (ทีมพัฒนาของฉันตอนนี้ทำงานทั้ง 4.9 และ 5 พร้อมกันตามวิธีการของคุณ) ขอขอบคุณและ +1!
CodeMouse92

2
@hwat มันควรจะใช้ได้ในgcc-6ตอนนี้
edwinksl

1
สิ่งนี้ช่วยฉันได้หลายครั้ง แต่ฉันมักจะลืม - ตรวจสอบให้แน่ใจว่าใช้โซลูชันเดียวกันกับยูทิลิตี้อื่น ๆ ในคอมไพเลอร์ GNU คอมไพเลอร์ที่คุณอาจใช้! ตัวอย่างเช่น GCOV จะบ่นเกี่ยวกับรุ่นที่ไม่ตรงกันหากคุณไม่เช่นนั้นอาจเป็นข้อมูลที่ไม่ถูกต้อง
Toby

23

ใช้Toolchain Test Build PPA :

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

ฉันไม่คิดว่า GCC 4.9 จะพร้อมใช้งานสำหรับ Ubuntu 14.04 อย่างสมบูรณ์ แพ็คเกจพื้นฐาน ( gcc-4.9-base ) และคอมไพเลอร์ GCC Go 4.9 ( gccgo-4.9 ) มีให้ใช้ แต่ส่วนหน้าอื่น ๆ ไม่ได้มี ฉันไม่รู้ว่าทำไม


1
@SudoSURoot อาจเป็นไปได้หรือไม่ตั้งเป็นค่าเริ่มต้นนั่นไม่ใช่ความกังวลของฉัน (มีโพสต์อื่นที่เกี่ยวข้องกับเรื่องนั้น) อย่างไรก็ตามส่วนหน้า C และ C ++ ของ GCC 4.9 นั้นสามารถติดตั้งได้ใน 14.04 เพียงอย่างเดียวจากที่เก็บอย่างเป็นทางการเป็นเท็จอย่างมีนัยสำคัญเนื่องจากgcc-4.9-baseแพ็คเกจไม่ได้และจะไม่มีส่วนหน้าแบบไบนารี
muru

คุณแก้ไขเกี่ยวกับแพ็คเกจพื้นฐาน อย่างที่คุณเห็นในคำตอบของฉันฉันใช้ PPA ฉันโพสต์ความคิดเห็นก่อนแล้วตอบคำถามตามที่ระบุจากคำถาม ... เพราะเพียงเพิ่ม PPA และติดตั้ง 4.9 ไม่เปิดใช้งานซึ่งจำเป็นต้องใช้ "use gcc 4.9" ฉันควรลบความคิดเห็นหลังจากตอบคำถามแล้ว ฉันขอโทษ. คำตอบของฉันคือสิ่งที่ควรมุ่งเน้น ฉันกระโดดไปสู่ข้อสรุป ... และแสดงความคิดเห็นอย่างรวดเร็ว จริง ๆ แล้วฉันค่อนข้างใหม่กับการใช้ 14.04 ตั้งแต่ฉันได้รับเซิร์ฟเวอร์เฉพาะ ฉันต้องทำให้แน่ใจว่าฉันไม่ได้ลงคะแนนและฉันจะแก้ไขถ้าฉันทำ
SudoSURoot

@SudoSURoot ไม่เป็นไร ถึงกระนั้นเว้นแต่ OP จะมีปัญหากับการโทรgcc-4.9หรือg++-4.9แทนที่จะเป็นgccหรือg++ฉันจะติดที่จะไม่อัปเดตทางเลือก
muru

ฉันเข้าใจโดยสิ้นเชิง ฉันสร้างระบบ Android ซึ่งใช้ $ (gcc ใด) และ $ (ซึ่ง g ++) เป็นต้น ... ดังนั้นฉันจึงต้องตั้งค่าเริ่มต้นเป็นรุ่นที่ฉันต้องการใช้เสมอ รหัสเคอร์เนลของฉันบางส่วนจะไม่รวบรวมกับโฮสต์ gcc-4.8 ดังนั้นฉันต้องอัปเดต ฉันเพิ่งทำซ้ำสิ่งที่ได้ผลสำหรับฉัน ขอบคุณที่เตือนฉันว่า ... เหมือนที่ฉันพูดในการแก้ไขจากความคิดเห็นล่าสุดฉันอาจลงคะแนนก่อนเวลาอันควรถ้าเป็นเช่นนั้นฉันจะแก้ไข ฉันทำงานเป็นเวลา 2 หรือ 3 วันในแหล่งเคอร์เนลของฉันเมื่อฉันโพสต์สิ่งเหล่านี้ ทุกคนมีวิธีการของพวกเขา ... ฉันเพิ่งค้นพบคำตอบที่ละเอียดยิ่งขึ้นคำถามที่น้อยลงฉัน g
SudoSURoot

แพ็คเกจล่าสุดคือ gcc-7 ATM
Elder Geek

5

Ubuntu 16.04 และใหม่กว่า

คุณสามารถติดตั้ง gcc 7.0 ใน Ubuntu 18.04 จากที่เก็บเริ่มต้นแล้ว หากต้องการติดตั้ง gcc-7 ใน Ubuntu 17.10, 18.04 และ 18.10 ให้เปิดเทอร์มินัลแล้วพิมพ์:

sudo apt install gcc-7 

ในการติดตั้ง gcc-8 ใน Ubuntu 18.04 และหลังจากนั้นให้เปิดเทอร์มินัลแล้วพิมพ์:

sudo apt install gcc-8

ในการติดตั้ง gcc-9 ใน Ubuntu 19.04 และหลังจากนั้นให้เปิด terminal และพิมพ์:

sudo apt install gcc-9

คุณสามารถติดตั้ง gcc-7 ใน Ubuntu 16.04 จาก ppa: jonathonf / gcc-7.1

sudo add-apt-repository ppa:jonathonf/gcc-7.1  
sudo apt update  
sudo apt install gcc-7  

คุณสามารถติดตั้ง gcc-8 ใน Ubuntu 16.04 จาก ppa: jonathonf / gcc-8.0

sudo add-apt-repository ppa:jonathonf/gcc-8.0  
sudo apt update  
sudo apt install gcc-8 

3

ในการเรียก gcc 4.9 โดยเฉพาะให้ใช้gcc-4.9ที่พร้อมท์คำสั่ง

ทุกรุ่น gcc gccคุณได้ติดตั้งสามารถเรียกว่าเป็นรายบุคคลโดยการเพิ่มยัติภังค์และหมายเลขรุ่นในตอนท้ายของ ในกรณีของคุณgcc-4.8และgcc-4.9ควรจะพร้อมใช้งาน ในเทอร์มินัลให้พิมพ์gcc-(จดบันทึกยัติภังค์) และกดแท็บสองครั้งเพื่อดูว่ามีเวอร์ชั่นอื่นติดตั้งอยู่หรือไม่

โปรดทราบว่า gcc เริ่มต้นยังคงเป็น 4.8 (ใช้gcc -vเพื่อยืนยันสิ่งนี้) การเปลี่ยนแปลงค่าเริ่มต้นนั้นไม่ใช่เรื่องสำคัญหากคุณติดตั้ง gcc-4.9 จากที่เก็บเริ่มต้นเนื่องจากไม่ได้เพิ่มรายการทางเลือกในการอัปเดต หากคุณสนใจที่จะเปลี่ยนค่าเริ่มต้นดูคำตอบสำหรับคำถามนี้


ฉันจะทำให้โครงการอาศัย Makefile และอาจจะสร้างโครงสร้างพื้นฐานอื่น ๆ สร้างด้วยวิธีgcc-4.9แทนgcc?
Nickolai Leschov

1
วิธีที่ดีที่สุดเพื่อให้แน่ใจว่าใช้ gcc-4.9 ในระบบการสร้างคือการเปลี่ยน gcc เริ่มต้น ไปที่ลิงก์ที่ฉันให้ไว้ในคำตอบสำหรับวิธีการทำสิ่งนี้ อีกวิธีหนึ่งคุณสามารถสร้างลิงก์สัญลักษณ์ แต่ฉันขอแนะนำให้ใช้สิ่งนี้ยกเว้นเป็นทางเลือกสุดท้ายเนื่องจากผู้จัดการแพ็กเกจอาจบ่นเมื่ออัปเดต gcc sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gccหากคุณยืนยัน: หากต้องการเปลี่ยนกลับไปใช้ค่าเริ่มต้น gcc-4.8 เพียงแทนที่ gcc-4.9 ด้วย gcc-4.8 คุณอาจต้องทำด้วย g ++ และคอมไพเลอร์ GNU อื่น ๆ ด้วย
holocronweaver

GCC 4.9 ไม่สามารถใช้งานได้ใน Ubuntu 14.04 (ยกเว้นคอมไพเลอร์ GCC Go ) ดังนั้นในขณะที่คำตอบนี้อาจใช้งานได้ใน Ubuntu 14.10 แต่ก็ไม่ได้ช่วยอะไรตอนนี้ :-)
SørenLøvborg

อันที่จริงมันมีอยู่ในอูบุนตู 14.04 แม้ว่ามันอาจจะเป็นความผิดพลาด: packages.ubuntu.com/trusty/gcc-4.9-base ฉันใช้มันตั้งแต่เดือนเมษายน
holocronweaver

0

ตกลงมาทำสิ่งนี้กัน:

GCC   9 8 7 6 5 4
19.04 M D M M
18.10   D M M M
18.04 P M D M M
16.04 P P P P D M
  • D : GCC เริ่มต้น

    sudo apt-get update
    sudo apt-get install gcc-X g++-X
    gcc-X --version
    

    สิ่งที่gccแพ็คเกจจะใช้แทน: https://packages.ubuntu.com/search?keywords=gcc

  • M : นำเสนอในรายการซื้อคืนหลัก

    sudo apt-get update
    sudo apt-get install gcc-X g++-X
    gcc-X --version
    

    เช่น: https://packages.ubuntu.com/search?keywords=gcc-7

  • P : ppa:ubuntu-toolchain-r/testซึ่งเป็นเจ้าของโดยคน Ubuntu และสามารถเชื่อถือได้ว่าไม่ใช่ไวรัสแม้ว่าอาจจะไม่เสถียร:

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install gcc-X g++-X
    gcc-X --version
    

    https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test

คำถามทั้งหมด:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.