Bagaimana cara menggunakan GCC terbaru di Ubuntu?


132

Saya ingin mengkompilasi program saya dengan versi terbaru gcc.

Ubuntu 14.04 datang dengan gcc 4.8.2, namun ada 4.9.0 tersedia, apalagi, saya melihat bahwa itu tersedia sebagai paket: gcc-4.9. Saya mencoba menginstalnya

sudo apt-get install gcc-4.9

tapi katanya

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.

Sepertinya sudah terpasang, tidak seperti yang standar? Bagaimana saya menggunakannya untuk membangun program saya?


Jika Anda ingin menginstal gcc-4.8, Anda harus menggunakan sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Semua berada dalam Ubuntu repo utama .

1
@Dumindu Tapi bagaimana cara menggunakan gcc-4.9khusus?
Nickolai Leschov

Hapus instalan orang lain dan instal 4.9.

2
@Dumindu Tunggu, apakah Anda baru saja menyuruh saya melakukan apa yang baru saja saya lakukan? Ini tidak bekerja.
Nickolai Leschov

beralih ke root pengguna: sudo su -goto /usr/binkemudian jalankan ls -l gcc*dan posting output Anda. maka saya akan memposting jawaban Anda.
αғsнιη

Jawaban:


196

Cara terbaik untuk menginstal gcc-4.9 dengan benar dan menetapkannya sebagai penggunaan versi gcc default Anda:

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

Dengan --slave, g++akan menyebabkan g++dialihkan bersama dengan gcc, ke versi yang sama. Tetapi, pada titik ini gcc-4.9 akan menjadi satu-satunya versi yang Anda konfigurasikan update-alternatives, jadi tambahkan 4,8 ke update-alternatives, jadi sebenarnya ada alternatif, dengan menggunakan:

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

Kemudian Anda dapat memeriksa yang mana yang diatur, dan mengubah bolak-balik menggunakan:

sudo update-alternatives --config gcc

CATATAN: Anda bisa melewatkan menginstal Gudang PPA dan hanya menggunakan /usr/bin/gcc-4.9-basetetapi saya lebih suka menggunakan rantai alat baru yang diperbarui.


Untuk GCC 5.X atau 6, paket (dan sesuai dengan itu, perintah) baru saja dipanggil gcc-5, gcc-6dll. Hal ini disebabkan oleh perubahan skema versi GCC , di mana 5.1 adalah rilis GCC 5 pertama, dan rilis 5.X di masa mendatang untuk perbaikan bug .


Terima kasih untuk edit @muru ... seperti yang saya katakan di bawah ini, saya sudah bangun selama sekitar 3 hari sangat lelah dan pembaruan-alternatif tidak memerlukan sudo dan saya pikir saya lupa (-) sebelum slave. :) Jadi, terima kasih.
SudoSURoot

Cobasudo apt-get -f install
SudoSURoot

4
Ini bekerja dengan sempurna. Juga, gantikan 5untuk 4.9membuat GCC 5 bekerja di Ubuntu. (Tim pengembangan saya sekarang menjalankan 4,9 dan 5 bersama satu sama lain mengikuti metode Anda.) Terima kasih, dan +1!
CodeMouse92

2
@ hwat Ini seharusnya berfungsi gcc-6sekarang.
edwinksl

1
Ini telah membantu saya beberapa kali, tetapi saya selalu lupa - pastikan untuk menerapkan solusi yang sama ke utilitas lain dalam koleksi kompiler GNU yang dapat Anda gunakan! GCOV misalnya akan mengeluh tentang ketidakcocokan versi jika tidak, mungkin menghasilkan data yang salah.
Toby

23

Gunakan PPA Test Builds Ps :

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

Saya kira GCC 4.9 belum sepenuhnya tersedia untuk Ubuntu 14.04. Paket dasar ( gcc-4.9-base ) dan kompiler GCC Go 4.9 ( gccgo-4.9 ) tersedia, tetapi antarmuka lainnya tidak. Saya tidak tahu kenapa.


1
@SudoSURoot itu mungkin atau mungkin tidak ditetapkan sebagai default, itu bukan urusan saya (ada posting lain yang berurusan dengan itu). Namun, frontend C dan C ++ GCC 4.9 yang dapat diinstal pada 14,04 murni dari repositori resmi ternyata salah, karena gcc-4.9-basepaket tidak dan tidak akan berisi frontend biner.
muru

Anda benar tentang paket dasar. Seperti yang akan Anda lihat dalam jawaban saya, saya menggunakan PPA. Saya memposting komentar pertama, kemudian menjawab pertanyaan sebagaimana dinyatakan, dari pertanyaan ... Karena hanya menambahkan PPA dan menginstal 4,9 tidak mengaktifkannya yang diperlukan untuk "menggunakan gcc 4.9". Saya seharusnya menghapus komentar setelah saya menjawab pertanyaan. Saya minta maaf. Jawaban saya adalah apa yang harus difokuskan. Saya langsung mengambil kesimpulan ... dan berkomentar cepat. Saya sebenarnya cukup baru dengan menggunakan 14,04 karena saya punya saya dedicated server. Saya yakin untuk memastikan bahwa saya tidak memilih dan saya akan memperbaikinya jika saya lakukan.
SudoSURoot

@SudoSURoot baik-baik saja. Meski begitu, kecuali OP memiliki masalah dengan panggilan gcc-4.9atau g++-4.9bukannya gccatau g++, saya akan tetap tidak memperbarui alternatif.
muru

Saya sangat mengerti. Saya membangun sistem Android, yang menggunakan banyak $ (yang gcc) dan $ (yang g ++) dll ... Jadi saya selalu harus memiliki default diatur ke versi yang ingin saya gunakan. Beberapa kode kernel saya tidak dapat dikompilasi dengan host gcc-4.8 jadi saya harus memperbarui. Saya baru saja mengulangi apa yang berhasil untuk saya. Terima kasih telah mengingatkan saya ... Seperti yang saya katakan di edit saya, dari komentar terakhir, saya mungkin telah memilih, sebelum waktunya, jika demikian saya akan memperbaikinya. Saya sudah bangun selama 2 atau 3 hari mengerjakan sumber kernel ketika saya memposting ini. Setiap orang memiliki caranya masing-masing ... Saya baru saja menemukan jawaban saya yang lebih teliti semakin sedikit pertanyaan yang saya
miliki

Paket terbaru adalah ATM gcc-7
Penatua Geek

5

Ubuntu 16.04 dan yang lebih baru

Anda sudah dapat menginstal gcc 7.0 di Ubuntu 18.04 dari repositori default. Untuk menginstal gcc-7 di Ubuntu 17.10, 18.04 dan 18.10 buka terminal dan ketik:

sudo apt install gcc-7 

Untuk menginstal gcc-8 di Ubuntu 18.04 dan kemudian buka terminal dan ketik:

sudo apt install gcc-8

Untuk menginstal gcc-9 di Ubuntu 19.04 dan kemudian buka terminal dan ketik:

sudo apt install gcc-9

Anda dapat menginstal gcc-7 di Ubuntu 16.04 dari ppa: jonathonf / gcc-7.1.

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

Anda dapat menginstal gcc-8 di Ubuntu 16.04 dari ppa: jonathonf / gcc-8.0.

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

3

Untuk memanggil gcc 4.9 secara khusus, gunakan gcc-4.9pada prompt perintah.

Semua versi gcc yang telah Anda instal dapat dipanggil secara individual dengan menambahkan tanda hubung dan nomor versi di akhir gcc. Dalam kasus Anda, gcc-4.8dan gcc-4.9harus tersedia. Di terminal, ketik gcc-(perhatikan tanda hubung) dan tab tekan dua kali untuk melihat apakah ada versi lain yang diinstal.

Perhatikan bahwa gcc default kemungkinan masih 4.8. (Gunakan gcc -vuntuk memverifikasi ini.) Sayangnya mengubah default tidak sepele jika Anda menginstal gcc-4.9 dari repositori default karena tidak menambahkan entri pembaruan-alternatif. Jika Anda tertarik untuk mengubah default, lihat jawaban untuk pertanyaan ini .


Bagaimana cara membuat proyek dengan mengandalkan makefile dan mungkin pembangunan infrastruktur lainnya dengan gcc-4.9bukan gcc?
Nickolai Leschov

1
Cara terbaik untuk memastikan gcc-4.9 digunakan di seluruh sistem build adalah dengan mengubah gcc default. Ikuti tautan yang saya berikan dalam jawaban saya untuk cara melakukan ini. Atau Anda dapat membuat tautan simbolis, meskipun saya sarankan menentang ini kecuali sebagai pilihan terakhir karena manajer paket mungkin mengeluh ketika memperbarui gcc. Jika Anda bersikeras: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Untuk kembali ke default gcc-4.8, ganti saja gcc-4.9 dengan gcc-4.8. Anda mungkin harus melakukan ini dengan g ++ dan kompiler GNU lainnya juga.
holocronweaver

GCC 4.9 tidak tersedia di Ubuntu 14.04 (kecuali untuk kompiler GCC Go ), jadi sementara jawaban ini mungkin akan berfungsi di Ubuntu 14.10, itu tidak membantu sekarang. :-)
Søren Løvborg

Sebenarnya ini tersedia di Ubuntu 14.04, meskipun itu mungkin kesalahan: packages.ubuntu.com/trusty/gcc-4.9-base . Saya sudah menggunakannya sejak April.
holocronweaver

0

OK, mari kita lakukan ini:

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

Semua pertanyaan:

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.