Làm cách nào để cài đặt bản phát hành ổn định mới nhất của GCC trong Linux Mint?


8

Tôi muốn cài đặt phiên bản GCC (bộ sưu tập trình biên dịch GNU) mới nhất trong Linux Mint 17.3. Hiện g++ --versiontrả về 4.8.4, trong khi bản phát hành ổn định mới nhất là 5.3.


Backporting một phiên bản gần đây thường là có thể, nhưng cũng không tầm thường. Một thay thế là một cài đặt cục bộ từ nguồn. Từ quan điểm sạch sẽ, một backport là tốt hơn, mặc dù.
Faheem Mitha

Có cách nào khác để cài đặt nó, có thể không phải là một gói?
vẫy gọi

Vâng, như tôi đã nói ở trên, cài đặt cục bộ là một tùy chọn. Nhưng bạn cần cẩn thận rằng bạn có thể gỡ cài đặt nó một cách sạch sẽ sau đó. Xây dựng một gói là một quá trình khó khăn hơn, nhưng dễ dàng hơn và sạch hơn từ quan điểm bảo trì.
Faheem Mitha

Phiên bản mới nhất của Gcc, 9.2, được phân phối dưới dạng mã nguồn, nếu nhận xét này không bị người kiểm duyệt xóa, thì bạn có thể tìm thấy thời gian để đọc hướng dẫn trên trang web gốc gcc.gnu.org . Câu trả lời trước đã bị xóa mà không có lý do chính đáng IMHO.
bbaassssiiee

Câu trả lời:


8

Linux Mint của bạn được cài đặt sẵn gói GCC. Vì vậy, trước tiên tôi sẽ khuyên bạn nên kiểm tra xem gói đã có trong hệ thống của bạn hay chưa bằng cách gõ lệnh sau trong terminal.

apt-cache search gcc

Trong trường hợp bạn không có bất kỳ gói nào như vậy thì trước tiên hãy sử dụng lệnh sau trong thiết bị đầu cuối, bạn đã thêm kho lưu trữ sau:

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

sau đó sử dụng lệnh tiếp theo:

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

Luôn luôn có những điều cơ bản chúng ta nên học hỏi; coi đó là điều kiện tiên quyết trước linux .. Tìm hiểu về Google ... cố gắng thực hiện tìm kiếm khó hơn ...


Tại sao tôi muốn cài đặt g++-4.7, phiên bản thấp hơn phiên bản g++-4.8tôi đã có? Tôi muốn nâng cấp, không hạ cấp.
vẫy gọi

đó là 4,8 và bạn cần tìm kiếm gói mới nhất có sẵn với gcc tìm kiếm apt-cache tôi đã cung cấp cho bạn logic nhưng thực sự bạn đã hạ cấp điểm của tôi gr8
Vinood NK Maheshwari

Hiện tại câu trả lời này có vẻ không mạch lạc. Vui lòng giải thích lý do tại sao OP muốn cài đặt v4.7 thay vì v5, (tốt nhất là không có sáo rỗng về những đức tính của công việc khó khăn).
agc

thay thế 4.7 bằng 4.9 và nó hoạt động.
Algoman ngày

3

tải xuống phiên bản mới nhất của gcc

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

sử dụng lệnh: tar -xjfđể giải nén tập tin

Nhập thư mục mà bạn đã giải nén ngay bây giờ, nói vào $HOME/Downloads/gcc-5.3.0, sau đó gõ lệnh:

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

Cài đặt phụ thuộc: xây dựng GCC yêu cầu GMP4.2 +, MPFR 2.4.0+ và MPC 0.8.0+ và xây dựng thiết yếu

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

cài đặt trình biên dịch C ++

sudo apt-get install g++

Loại tiếp theo:

make 
sudo make install

Chỉnh sửa nếu bạn vẫn nhận được thông báo lỗi như "zlib.h không tìm thấy!" bạn có thể làm như sau để sửa nó:

apt-get install zlib1g-dev

Nếu bạn có một số lỗi, xin vui lòng bình luận. Tôi sẽ cập nhật.
GAD3R

Tại sao --disable-multilib?
vẫy gọi

lỗi:gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
becko

Liên kết đã chết.
einpoklum

1

Tôi không im lặng chắc chắn những gì nên là cuối cùng, bởi vì luôn luôn có một số mới nhất xuất hiện. Nhưng bạn có thể cài đặt bất kỳ trong số họ theo cách này.

Lấy gcc-8 làm ví dụ:

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

nếu bạn muốn chọn gcc-8 / g ++ - 8 với mức độ ưu tiên cao hơn (20 trong trường hợp này), bạn cũng cần phải

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8

0

Sự thật là tôi đơn giản là quá lười biếng để chuyển đi 17.3 - nó hiệu quả với tôi. Điều đó đang được nói, tôi vẫn cần một gcc mới hơn. Để biên dịch nó nhiều lần cho các mục tiêu khác nhau, tôi có một tập lệnh bash (xem bên dưới) mà tôi sửa đổi và chạy (Tôi đang viết hệ điều hành đồ chơi của riêng tôi, do đó tôi phải sử dụng một gcc được tạo đặc biệt).

Thay đổi các thư mục trong kịch bản dưới đây để phù hợp với các thư mục bạn có. Tôi giữ phiên bản đã biên dịch trong thư mục của riêng mình để tôi có thể dễ dàng chuyển đổi giữa phiên bản đã biên dịch và phiên bản của hệ thống. Tôi đề nghị bạn làm tương tự. Bạn cần tải xuống binutils-2.23.2 cũng như phiên bản gcc mà bạn quan tâm (Tôi đang sử dụng 7.1.0 bên dưới). Đặt chúng vào một thư mục ~ / contrib cùng với đoạn script bên dưới.

Bạn cũng có thể muốn thay đổi dòng "--enables-Languages ​​= c" thành "--enables-Languages ​​= c, c ++, objc" - dự án của tôi chỉ cần C. Một thay đổi khác sẽ là giá trị của PLATFORM. Tôi sử dụng "i686-elf" nhưng điều đó sẽ không hiệu quả với bạn (tôi đã thay đổi nó bên dưới thành thứ gì đó sẽ hoạt động cho nền tảng 32 bit). Bạn có thể thử "x86_64-linux-gnu" cho nền tảng 64 bit.

Đối với người tò mò - lý do tôi xây dựng nó như thế này là do quá trình xây dựng gcc thường có một lỗi ngăn cản việc xây dựng lại trong thư mục nguồn. Tôi không biết lỗi này có còn tồn tại không (lần cuối tôi gặp nó trong 4.8.0), nhưng cách giải quyết duy nhất là xây dựng rõ ràng trong một thư mục riêng nếu bạn muốn xây dựng lại.

[EDIT: Thực hiện cài đặt các phụ thuộc được đề xuất ở trên bởi 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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.