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++ --version
trả về 4.8.4, trong khi bản phát hành ổn định mới nhất là 5.3.
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++ --version
trả về 4.8.4, trong khi bản phát hành ổn định mới nhất là 5.3.
Câu trả lời:
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 ...
g++-4.7
, phiên bản thấp hơn phiên bản g++-4.8
tôi đã có? Tôi muốn nâng cấp, không hạ cấp.
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
--disable-multilib
?
gcc/lto-compress.c:28:18: fatal error: zlib.h: No such file or directory
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
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"