Bagaimana cara menginstal rilis stabil terbaru GCC di Linux Mint?

8

Saya ingin menginstal versi terbaru GCC (GNU compiler collection) di Linux Mint 17.3. Saat ini g++ --versionmengembalikan 4.8.4, sedangkan rilis stabil terbaru adalah 5.3.

becko
sumber
Backporting versi yang lebih baru biasanya dimungkinkan, tetapi juga non-sepele. Alternatif adalah instalasi lokal dari sumber. Dari sudut pandang kebersihan, backport lebih disukai.
Faheem Mitha
Apakah ada cara lain untuk menginstalnya, mungkin bukan sebagai paket?
becko
Ya, seperti yang saya katakan di atas, instalasi lokal adalah pilihan. Tetapi Anda harus berhati-hati bahwa Anda dapat menghapus instalasinya setelah itu. Membangun paket adalah proses yang lebih sulit, tetapi lebih mudah dan lebih bersih dari sudut pandang pemeliharaan.
Faheem Mitha
Versi terbaru dari Gcc, 9.2, didistribusikan sebagai kode sumber, jika komentar ini tidak dihapus oleh moderator, maka Anda mungkin punya waktu untuk membaca howto di situs aslinya gcc.gnu.org . Jawaban sebelumnya terhapus tanpa alasan yang sah IMHO.
bbaassssiiee

Jawaban:

8

Linux Mint Anda sudah diinstal sebelumnya dengan paket GCC. Jadi pertama-tama saya akan merekomendasikan Anda untuk memeriksa apakah paket sudah ada di sistem Anda dengan mengetikkan perintah berikut di terminal.

apt-cache search gcc

Jika Anda tidak memiliki paket seperti itu maka gunakan perintah berikut di terminal terlebih dahulu Anda telah menambahkan repositori berikut:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

lalu gunakan perintah selanjutnya:

sudo apt-get update
sudo apt-get install g++-4.7 c++-4.7

Selalu ada hal dasar yang harus kita pelajari; anggap sebagai prasyarat sebelum linux .. Pelajari googling ... coba lakukan pencarian yang lebih sulit ...

Vinood NK Maheshwari
sumber
Mengapa saya ingin menginstal g++-4.7, yang merupakan versi yang lebih rendah daripada g++-4.8, yang sudah saya miliki? Saya ingin meningkatkan, bukan downgrade.
becko
itu 4,8 dan Anda perlu mencari sebelum untuk paket terbaru yang tersedia dengan gcc pencarian apt-cache saya memberi Anda logika tetapi Anda benar-benar menurunkan poin saya gr8
Vinood NK Maheshwari
Saat ini jawaban ini tampaknya tidak koheren. Tolong jelaskan mengapa OP ingin menginstal v4.7 daripada v5, (lebih disukai tanpa klise tentang manfaat kerja keras).
agc
ganti 4.7 dengan 4.9 dan berhasil.
Algoman
3

unduh versi terbaru gcc

wget http://www.netgull.com/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.bz2

gunakan perintah: tar -xjfuntuk unzip file

Masukkan direktori yang baru saja Anda buka ritsletingnya, katakan $HOME/Downloads/gcc-5.3.0, lalu ketik perintah:

./configure --disable-checking --enable-languages=c,c++,objc 
--disable-multilib --with-system-zlib prefix=/usr/bin/gcc-5.3

Instalasi ketergantungan: build GCC membutuhkan GMP4.2 +, MPFR 2.4.0+, dan MPC 0.8.0+ dan build esensial

sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev
sudo apt-get install build-essential

instal kompiler C ++

sudo apt-get install g++

Jenis berikutnya:

make 
sudo make install

Edit jika Anda masih mendapatkan pesan kesalahan seperti "zlib.h tidak ditemukan!" Anda dapat melakukan di bawah ini untuk memperbaikinya:

apt-get install zlib1g-dev
GAD3R
sumber
Jika Anda memiliki beberapa kesalahan, silakan komentar. Saya akan memperbarui.
GAD3R
Mengapa --disable-multilib?
becko
galat:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
becko
Tautannya sudah mati.
einpoklum
1

Saya tidak yakin apa yang harus menjadi yang terbaru, karena selalu ada beberapa yang terbaru keluar. Tetapi Anda dapat menginstalnya dengan cara ini.

Ambil gcc-8 sebagai contoh:

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

jika Anda ingin memilih gcc-8 / g ++ - 8 dengan prioritas lebih tinggi (20 dalam hal ini), Anda juga perlu melakukannya

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8
Zhi Yuan
sumber
0

Sejujurnya aku terlalu malas untuk pindah 17.3 - itu bekerja untukku. Meski begitu, saya masih membutuhkan gcc yang lebih baru. Untuk mengkompilasinya berulang kali untuk target yang berbeda, saya memiliki skrip bash (lihat di bawah) yang saya modifikasi dan jalankan (saya sedang menulis OS mainan saya sendiri, oleh karena itu saya harus menggunakan gcc yang dihasilkan secara khusus).

Ubah direktori dalam skrip di bawah ini agar sesuai dengan direktori yang Anda miliki. Saya menyimpan versi yang dikompilasi di direktori saya sendiri sehingga saya dapat dengan mudah beralih antara versi yang saya kompilasi dan versi sistem. Saya sarankan Anda melakukan hal yang sama. Anda perlu mengunduh binutils-2.23.2 dan juga versi gcc yang Anda minati (Saya menggunakan 7.1.0 di bawah). Masukkan mereka ke dalam direktori ~ / contrib bersama dengan skrip di bawah ini.

Anda mungkin juga ingin mengubah baris "--enabled-languages ​​= c" menjadi "--enabled-languages ​​= c, c ++, objc" - proyek saya hanya membutuhkan C. Perubahan lain adalah nilai PLATFORM. Saya menggunakan "i686-elf" tetapi itu tidak akan berhasil untuk Anda (saya mengubahnya di bawah untuk sesuatu yang akan bekerja untuk platform 32-bit). Anda dapat mencoba "x86_64-linux-gnu" untuk platform 64-bit.

Untuk yang penasaran - alasan saya membangunnya seperti ini adalah karena proses pembuatan gcc dulu memiliki bug yang mencegah pembangunan kembali di direktori sumber. Saya tidak tahu apakah bug ini masih ada (terakhir saya temui di 4.8.0), tetapi satu-satunya solusi adalah membangun secara eksplisit di direktori terpisah jika Anda ingin membangun kembali.

[EDIT: Lakukan instalasi dependensi yang disarankan di atas oleh GAD3R]

#!/bin/bash

function die() {
   echo $1
   exit 127
}


export PREFIX=/home/lelanthran/opt/cross
export TARGET=i686-linux-gnu
export PATH="$PREFIX/bin:$PATH"

pushd $PWD &> /dev/null
mkdir -p build-binutils
cd build-binutils
../binutils-2.23.2/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --with-sysroot \
   --disable-nls \
   --disable-werror || die "binutils/config error"
make           || die "binutils/make error"
make install   || die "binutils/make install error"

popd &> /dev/null

pushd $PWD &> /dev/null
mkdir -p build-gcc-7.1.0
cd build-gcc-7.1.0
../gcc-7.1.0/configure \
   --target=$TARGET \
   --prefix="$PREFIX" \
   --disable-nls \
   --enable-languages=c \
   --without-headers || die "gcc/config error"
make all-gcc                  || die "gcc/make all-gcc error"
make all-target-libgcc        || die "gcc/make all-target-libgcc error"
make install-gcc              || die "gcc/make install-gcc error"
make install-target-libgcc    || die "gcc/make install-target-libgcc error"
Lelanthran
sumber