Ubuntu'da en son GCC'yi nasıl kullanırım?


132

Programımı en son sürümüyle derlemek istiyorum gcc.

Ubuntu 14.04 ancak dahası, ben bir paket olarak kullanılabilir olduğunu görmek 4.9.0 müsait var, gcc 4.8.2 ile birlikte gelir: gcc-4.9. Yüklemeye çalıştım

sudo apt-get install gcc-4.9

ama diyor ki

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.

Zaten yüklü gibi görünüyor, varsayılan olarak değil mi? Programımı oluşturmak için nasıl kullanırım?


Yüklemek gcc-4.8istiyorsanız kullanmanız gerekir sudo apt-get install gcc-4.8. gcc-4.9, gcc-4.8, gcc-4.7, gcc-4.6Tüm içindedir Ubuntu ana repo .

1
@Dumindu Ama özellikle nasıl kullanırım gcc-4.9?
Nickolai Leschov

Diğerlerini kaldırın ve 4.9'u yükleyin.

2
@Dumindu Bekle, az önce yaptığımı yapmamı mı söyledin? Çalışmıyor.
Nickolai Leschov

root kullanıcısına geç: sudo su -goto /usr/binsonra çalıştır ls -l gcc*ve çıktılarını gönder. sonra cevabınızı göndereceğim.
αғsнιη

Yanıtlar:


196

Gcc-4.9’u doğru şekilde kurmanın ve varsayılan gcc sürümünüzün kullandığı şekilde ayarlamanın en iyi yolu:

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İle g++neden olur g++ile birlikte açık olması için gccaynı sürüme. Ancak, bu noktada gcc-4.9 yapılandırılmış tek versiyonunuz olacaktır update-alternatives, bu nedenle 4.8'e ekleyin update-alternatives, bu yüzden aşağıdakileri kullanarak bir alternatif var:

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

Ardından hangisinin ayarlandığını kontrol edebilir ve aşağıdakileri kullanarak ileri ve geri değiştirebilirsiniz:

sudo update-alternatives --config gcc

NOT: PPA Deposunu kurmayı atlayabilir ve sadece kullanabilirsiniz, /usr/bin/gcc-4.9-baseancak yeni güncellenmiş araç zincirlerini kullanmayı tercih ederim.


GCC 5.x'ten veya 6'ya paketleri (ve buna, komutlar) sadece denir için gcc-5, gcc-6vb Bu değişimin nedeni GCC sürüm şeması 5.1 ilk GCC 5 sürümüdür, ve gelecekteki 5.X bültenleri hata düzeltmeleri içindir .


Düzenleme @muru için teşekkürler ... aşağıda söylediğim gibi, yaklaşık 3 gün çok yorgundum ve güncelleme alternatifleri sudo gerektiriyor ve sanırım köle öncesi (-) 'yi unuttum. :) Yani, teşekkür ederim.
SudoSURoot 15:15

Deneyinsudo apt-get -f install
SudoSURoot 25:15

4
Bu mükemmel çalışıyor. Ayrıca, yerine 5için de 4.9Ubuntu üzerinde çalışan GCC 5 olsun. (Geliştirme ekibim şimdi yönteminizi izleyerek hem 4.9 hem de 5'i birbirine geçiriyor.) Teşekkürler ve +1!
CodeMouse92,

2
@hwat Şimdilik çalışmalı gcc-6.
edwinksl

1
Bu bana birkaç kez yardımcı oldu, ancak her zaman unutuyorum - aynı çözümü kullanabileceğiniz GNU derleyici koleksiyonundaki diğer araçlara da uyguladığınızdan emin olun! Örneğin GCOV, yanlış veri üretmediğiniz takdirde sürüm uyuşmazlığından şikayetçi olacaktır.
Toby,

23

Takım Zinciri Testi Oluşturmak PPA kullanın :

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

GCC 4.9'ın henüz Ubuntu 14.04 için uygun olduğunu sanmıyorum. Baz paketi ( gcc-4.9-base ) ve GCC Go 4.9 derleyicisi ( gccgo-4.9 ) mevcuttur, ancak diğer ön uçlar mevcut değildir. Neden bilmiyorum.


1
@SudoSURoot varsayılan olarak ayarlanmış veya ayarlanmamış olabilir, bu benim sorunum değil (bununla ilgili başka mesajlar var). Bununla birlikte, GCC 4.9'un C ve C ++ ön uçları, 14.04'e yalnızca resmi depolardan kurulabilir, çünkü gcc-4.9-basepaket bir ikili ön uç içermez ve içermez.
muru

Temel paket konusunda haklısın. Cevabımda göreceğiniz gibi, PPA'yı kullandım. İlk önce yorumu yayınladım, sonra soruyu, sorudan cevapladım ... Çünkü sadece PPA'yı eklemek ve 4.9 kurmak, "gcc 4.9 kullanmak" için gerekli olanı etkinleştirmiyor. Soruyu cevapladıktan sonra yorumu silmeliydim. Özür dilerim. Cevabım, neye odaklanılması gerektiğidir. Sonuçlara atladım ... ve oruç tuttum. Bana adanmış sunucu aldığımdan beri 14.04 kullanarak oldukça yeni. Aşağı oy kullanmadığımdan emin olmak istiyorum ve eğer yaparsam düzelteceğim.
SudoSURoot 14:15

@SudoSURoot tamam. OP çağırarak ile ilgili bir sorun olmadıkça Böyle bile olsa, gcc-4.9ya da g++-4.9yerine gccya g++, ben alternatifler güncellemiyor sadık olacaktır.
muru

Tamamen anlıyorum. Yine de Android sistemlerini kuruyorum (hangisini $ (hangi gcc)) ve $ (hangi g ++) vb. Çekirdek kodumun bir kısmı gcc-4.8 ana bilgisayarıyla derlemediğinden, güncellemek zorunda kaldım. Sadece benim için neyin işe yaradığını tekrarladım. Yine de hatırlattığın için teşekkür ederim ... Düzenlememde dediğim gibi, son yorumumda, erken karar verdim, eğer öyleyse düzeltebilirim. Bunları gönderdiğimde çekirdek kaynağımda 2 veya 3 gün çalıştım. Herkesin kendi yolu var ... Cevabımı daha ayrıntılı bulduğumda daha az sorulan sorular g
SudoSURoot

En son paket ise gcc-7 ATM
Elder Geek

5

Ubuntu 16.04 ve üstü

Gcc 7.0'ı zaten varsayılan depolardan Ubuntu 18.04'e yükleyebilirsiniz. Gcc-7'yi Ubuntu 17.10, 18.04 ve 18.10'a kurmak için terminali açın ve şunu yazın:

sudo apt install gcc-7 

Gcc-8'i Ubuntu 18.04'e kurmak ve daha sonra terminali açmak için şunu yazın:

sudo apt install gcc-8

Gcc-9'u Ubuntu 19.04'e kurmak ve daha sonra terminali açmak için şunu yazın:

sudo apt install gcc-9

Gcc-7'yi Ubuntu 16.04'e ppa: jonathonf / gcc-7.1'den yükleyebilirsiniz.

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

Gcc-8'i Ubuntu 16.04'e ppa: jonathonf / gcc-8.0 adresinden yükleyebilirsiniz.

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

3

Özel olarak gcc 4.9'u aramak gcc-4.9için komut isteminde kullanın .

Yüklemiş olduğunuz tüm gcc sürümleri, bir tire ve sonundaki sürüm numarası eklenerek ayrı ayrı çağrılabilir gcc. Senin durumunda gcc-4.8ve gcc-4.9mevcut olmalıdır. Bir terminalde, gcc-kurulu başka sürümlerin olup olmadığını görmek için iki kez tire işaretini ve itme tırnağını yazın.

Varsayılan gcc'nin hala 4,8 olduğunu unutmayın. ( gcc -vBunu doğrulamak için kullanın .) Güncelleme alternatifleri girişi eklemediği için varsayılan depodan gcc-4.9 yüklüyseniz, varsayılanı değiştirmek önemsiz değildir. Varsayılanı nasıl değiştireceğinizle ilgileniyorsanız, bu sorunun cevaplarına bakın .


Makefile ve gcc-4.9bunun yerine muhtemelen inşa edilmiş diğer altyapı yapılarına dayanarak bir proje nasıl yapabilirim gcc?
Nickolai Leschov

1
Gcc-4.9'un yapı sistemlerinde kullanıldığından emin olmanın en iyi yolu varsayılan gcc'yi değiştirmektir. Bunun nasıl yapılacağı için cevabımda verdiğim bağlantıyı takip et. Alternatif olarak, sembolik bir link oluşturabilirsiniz, ancak paket müdürü gcc'yi güncellerken şikayet edebileceğinden son çare olmadıkça buna karşı öneriyorum. Eğer ısrar: sudo rm /usr/bin/gcc; sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc. Gcc-4.8 varsayılanına geri dönmek için, gcc-4.9'u sadece gcc-4.8 ile değiştirin. Bunu g ++ ve diğer GNU derleyicileri ile yapmanız gerekebilir.
holocronweaver

GCC 4.9, Ubuntu 14.04'te mevcut değildir ( GCC Go derleyicisi hariç ), bu nedenle bu cevap muhtemelen Ubuntu 14.10'da çalışacak olsa da, şimdi yardımcı olmuyor. :-)
Søren Løvborg

Aslında, Ubuntu 14.04'te mevcut olmasına rağmen, bir hata olmuş olabilir: Packages.ubuntu.com/trusty/gcc-4.9-base . Nisan ayından beri kullanıyorum.
holocronweaver

0

Tamam hadi yapalım:

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

Bütün sorular:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.