Saya telah menginstal gcc-3.3 / g ++ - 3.3 di ubuntu 11.04 yang sudah memiliki gcc / g ++ - 4.4. Jadi di sistem saya, gcc-3.3 dan 4.4 tersedia. Saya dapat memanggil kedua kompiler sesuai keinginan saya. Jika saya hanya memanggil perintah gcc
maka gcc-4.4 akan dipanggil. Untuk memanggil gcc-3.3, saya harus menggunakan perintah gcc-3.3
.
Bagaimana cara mengubah kompilator default sebagai gcc-3.3? Ketika saya menjalankan perintah gcc
itu harus memanggil gcc-3.3 dan bukan gcc-4.4.
Selain itu, bagaimana cara mengubah variabel CXX di file make ke gcc-3.3? Saya ingin mengubah satu tempat global umum dalam sistem daripada mengubah semua file make.
CXX=gcc-3.3
atauexport CXX=gcc-3.3
dan kemudianmake
ketika Anda mengubahnya secara globalupdate-alternatives
dengannya sudah akan menggunakan gcc-3.3 dan ini tidak perlu.Jawaban:
Seperti yang disarankan @Tommy, Anda harus menggunakan
update-alternatives
.Ini memberikan nilai ke setiap perangkat lunak keluarga, sehingga itu menentukan urutan aplikasi akan dipanggil.
Ini digunakan untuk mempertahankan versi yang berbeda dari perangkat lunak yang sama pada suatu sistem. Dalam kasus Anda, Anda akan dapat menggunakan beberapa deklinasi
gcc
, dan satu akan disukai.Untuk mengetahui prioritas gcc saat ini, ketik perintah yang ditunjukkan oleh komentar @ tripleee:
Sekarang, perhatikan prioritas yang dikaitkan
gcc-4.4
karena Anda harus memberikan prioritas yang lebih tinggigcc-3.3
.Untuk mengatur alternatif Anda, Anda harus memiliki sesuatu seperti ini (dengan asumsi
gcc
instalasi Anda terletak di/usr/bin/gcc-3.3
, dangcc-4.4
prioritasnya kurang dari 50) :--edit--
Terakhir, Anda juga dapat menggunakan antarmuka interaktif
update-alternatives
untuk beralih antar versi dengan mudah. Ketikupdate-alternatives --config gcc
untuk diminta memilih versi gcc yang ingin Anda gunakan di antara yang diinstal.--edit 2 -
Sekarang, untuk memperbaiki variabel lingkungan CXX di seluruh sistem, Anda perlu meletakkan baris yang ditunjukkan oleh @ DipSwitch di
.bashrc
file Anda (ini akan menerapkan perubahan hanya untuk pengguna Anda, yang menurut saya lebih aman):sumber
cc
:root@host:/root# update-alternatives --get-selections | grep '/usr/bin/gcc' cc auto /usr/bin/gcc
update-alternatives --query gcc
, yang mungkin tidak berfungsi, misalnya dalam skrip penyediaan otomatis. Juga, bagaimana ini bisa dibuat platform agnostik?Berikut adalah contoh lengkap jawaban jHackTheRipper untuk TL; DR kerumunan. :-) Dalam kasus ini, saya ingin menjalankan g ++ - 4.5 pada sistem Ubuntu yang defaultnya adalah 4.6. Seperti
root
:Di sini, 4.6 masih default (alias "mode otomatis"), tetapi saya secara eksplisit beralih ke 4.5 untuk sementara (mode manual). Untuk kembali ke 4.6:
(Perhatikan penggunaan
cpp-bin
alih - alih hanyacpp
. Ubuntu sudah memilikicpp
alternatif dengan tautan master/lib/cpp
. Mengganti nama tautan itu akan menghapus/lib/cpp
tautan, yang dapat merusak skrip.)sumber
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
g++-6
paket?__builtin
hal-hal yang tidak ditentukan .Ini adalah deskripsi bagus dan petunjuk langkah demi langkah cara membuat dan mengelola alternatif master dan slave (gcc dan g ++).
Singkatnya:
sumber
Antara 4,8 dan 6 dengan semua
--slaves
:dan
Ganti di antara keduanya dengan
update-alternatives --config gcc
.sumber
cc
danc++
garis, yang menyebabkan kesalahan: cc alternatif tidak dapat menjadi budak dari gcc: ini adalah alternatif utamaSekarang, ada gcc-4.9 yang tersedia untuk Ubuntu / presisi.
Buat grup alternatif kompilator di mana kompiler distro memiliki prioritas lebih tinggi:
CATATAN: versi g ++ diubah secara otomatis dengan tombol versi gcc. cpp-bin harus dilakukan secara terpisah karena terdapat alternatif master "cpp".
Buat daftar alternatif kompiler yang tersedia:
Untuk memilih gcc, g ++, dan cpp versi 4.9 secara manual, lakukan:
Periksa versi kompiler:
Kembalikan pengaturan kompiler distro (di sini: kembali ke v4.6):
sumber
Saya menemukan masalah ini saat mencoba menginstal kompiler clang baru. Ternyata baik Debian dan pengelola LLVM setuju bahwa sistem alternatif harus digunakan sebagai alternatif, BUKAN untuk pembuatan versi .
Solusi yang mereka usulkan adalah seperti ini: di
PATH=/usr/lib/llvm-3.7/bin:$PATH
mana /usr/lib/llvm-3.7/bin adalah direktori yang dibuat oleh paket llvm-3.7, dan yang berisi semua alat dengan nama non-sufiksnya. Dengan itu, llvm-config (versi 3.7) muncul dengan nama biasa di PATH Anda. Tidak perlu mengotak-atik symlink, atau memanggil llvm-config-3.7 yang terinstal di / usr / bin.
Juga, periksa paket bernama llvm-defaults (atau gcc-defaults), yang mungkin menawarkan cara lain untuk melakukan ini (saya tidak menggunakannya).
sumber
Jika Anda menginginkan cara yang lebih cepat (tetapi masih sangat bersih) untuk mencapainya untuk tujuan pribadi (misalnya jika Anda ingin membangun proyek tertentu yang memiliki beberapa persyaratan kuat terkait versi kompiler), cukup ikuti langkah-langkah berikut:
echo $PATH
dan cari direktori pribadi yang memiliki prioritas sangat tinggi (dalam kasus saya, saya punya~/.local/bin
);Misalnya:
Tentu saja, ini akan bekerja untuk satu pengguna (ini bukan solusi luas sistem), tetapi di sisi lain, saya tidak suka mengubah terlalu banyak hal dalam instalasi saya.
sumber
Saya hanya menggunakan baris di bawah ini dan berhasil. Aku hanya ingin mengkompilasi
VirtualBox
danVMWare WorkStation
menggunakankernel 4.8.10
diUbuntu 14.04
. Awalnya, kebanyakan hal tidak berfungsi seperti grafik dan jaringan. Saya beruntung yangVMWare workstation
dimintagcc 6.2.0
. Saya tidak bisa memulaiGenymotion Android emulators
karena virtualbox saya mati. Akan memposting hasil nanti jika perlu.sumber