PPA'dan g ++ 4.8 indirildi, ancak varsayılan olarak ayarlanamıyor mu?


15

Ubuntu 12.10'da g ++ 4.8'i indirerek indirdim:

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

ama yaptığım zaman:

sudo update-alternatives --config g++

g ++ sürümlerini değiştirmek için şunu söylüyor:

update-alternatives: error: no alternatives for g++.

Ancak ben yaparsam:

g++ --version

diyor ki:

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

G ++ 4.8 yüklememi varsayılan g ++ olarak nasıl ayarlayabilirim?

Yanıtlar:


11

Her şeyden önce, tüm araçların 4.8 ikili dosyalarının nerede olduğunu bulmalısınız:

$ which gcc-4.8
/usr/bin/gcc-4.8
$ which g++-4.8
/usr/bin/g++-4.8
$ ls /usr/bin/*-4.8
/usr/bin/cpp-4.8         /usr/bin/x86_64-linux-gnu-cpp-4.8
/usr/bin/g++-4.8         /usr/bin/x86_64-linux-gnu-g++-4.8
/usr/bin/gcc-4.8         /usr/bin/x86_64-linux-gnu-gcc-4.8
/usr/bin/gcc-ar-4.8      /usr/bin/x86_64-linux-gnu-gcc-ar-4.8
/usr/bin/gcc-nm-4.8      /usr/bin/x86_64-linux-gnu-gcc-nm-4.8
/usr/bin/gcc-ranlib-4.8  /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.8
/usr/bin/gcov-4.8

Yani, tüm ikili dosyalarımız var, şimdi bu tür ikili dosyalar için bazı sembollerin olup olmadığını görelim:

$ cd /usr/bin
$ ls -l gcc* cpp g++
lrwxrwxrwx 1 root root      7 sep 18 14:02 cpp -> cpp-4.7
lrwxrwxrwx 1 root root      7 abr 22  2013 g++ -> g++-4.7
lrwxrwxrwx 1 root root      7 sep 18 14:02 gcc -> gcc-4.7

Gördüğümüz gibi, sadece cpp, g++ve gccsembolik bağlantıları vardır. Burada iki seçeneğimiz var.

sembolik bağlantılarını

Önce gerçekleri kaldırarak sembolikleri bizimkiyle değiştiriyoruz:

sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++

Sonra bizim

sudo ln -s /usr/bin/cpp-4.8 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

Geri almak için aynı komutları kullanın, bunun yerine 4.7 veya 4.6 ile

sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/cpp-4.7 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++

Yaptığımda: ls -l gcc * cpp g ++ döndü: ls: gcc'ye erişemiyor *: Böyle bir dosya veya dizin yok ls: cpp erişemiyor: Böyle bir dosya veya dizin yok ls: g ++ erişemiyor: Böyle bir dosya veya dizin yok
user997112

Özür gerekmez :) Bir kez kaldırma işlevini çağırdığınızda çalışır, ancak "bizim" simgeleri oluşturmak için gittiğimde şöyle diyor: sudo ln -s -T / usr / bin / cpp /usr/bin/cpp-4.8 ln: başarısız /usr/bin/cpp-4.8 'sembolik bağlantısı nasıl oluşturulur: Dosya var
user997112

(Ben rm komutunu iki kez çağırdım, bu yüzden ikinci kez mevcut bağlantıların gerçekten silindiğini doğruladı / şikayet etti)
user997112

3
Bu korkunç bir fikir . gccÇekirdek modüllerini derlemek için kullanılan birçok program vardır ve aralarından bazıları (örn. Nvidia) sessizce çöker gccve çekirdek derlendiğinde aramazlar.
nbubis

1
@nbubis iyi, soru "g ++ 4.8 kurulumumu varsayılan g ++ olarak nasıl ayarlayabilirim?", yani, bunu kim yaparsa yapsın, ne yaptıklarını biliyorlar, hayır mı? Öte yandan, hangi alternatifi önerebilirsiniz?
15:37

16

Sen izin gerekiyor update-alternativesardından kullanmak istediğiniz bir yapılandırmak her biri için bir kayıt oluşturmak ve, sen 2 C ++ derleyiciler sahip olduğunu bilmek. Bu, aşağıdakilerle yapılır:

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6.3 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40
sudo update-alternatives --config g++ 

Bu noktadan itibaren, derleyicileri değiştirirken gereken tek şey bu komuttur:

sudo update-alternatives --config g++

Daha man update-alternativesfazla bilgi için bakınız .

Kaynak: Birden fazla gcc örneği nasıl kullanılır?


@Braiam Herhangi bir paketle aynı şekilde yapılabilir.
Radu Rădeanu

3
Birisi 60 ve 40'ı detaylandırabilir mi? Bunu birçok yerde gördüm
user997112

@ user997112 Adamı okumanızı öneririm, ama eğer 70 ve 30'dan fazla isterseniz, 70 ve 30'u kullanın ...
Radu Rădeanu

1
@ user997112 bunlar öncelik numaralarıdır ve yalnızca --auto kullanılırken geçerlidir. kullanarak bazı örnekleri görebilirsinizupdate-alternatives --display editor
Braiam

2
On 12.04 olsun: güncelleme-alternatifleri: hata: alternatif g ++ usta olamaz: bu gcc bir köle
rickfoosusa

9

Bu, master ve slave (gcc ve g ++) alternatiflerinin nasıl oluşturulacağı ve yönetileceği ile ilgili harika bir açıklama ve adım adım talimattır.

Kısacası,

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 
sudo update-alternatives --config gcc

Ubuntu'ya Sor hoş geldiniz! Bu teorik olarak soruyu cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak tercih edilir.
Stormvirux

Haklısın.
Anton K

1
O köle ile günümü kurtardım. tx
Lennart Rolland
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.