Cập nhật lên gcc và g ++ mới nhất trên Ubuntu 16.04


11

Gần đây tôi đã cố hạ cấp xuống gcc 4.7 vì mã cfd tôi đang làm việc không được biên dịch với phiên bản gcc mới nhất. Nhưng sau nhiều lỗi và mã vẫn không được biên dịch, tôi đã từ bỏ và muốn quay lại trình biên dịch gcc và g ++ mới nhất tuy nhiên có vẻ như tôi đã làm hỏng thứ gì đó.

Khi tôi làm:

sudo update-alternatives --remove-all gcc 
sudo update-alternatives --remove-all g++
sudo apt-get install gcc-6.2 g++-6.2

hoặc thậm chí gcc-5.1 g ++ - 5.1 cho vấn đề đó, nó mang lại cho tôi lỗi sau

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-6.2
E: Couldn't find any package by glob 'gcc-6.2'
E: Couldn't find any package by regex 'gcc-6.2'
E: Unable to locate package g++-6.2
E: Couldn't find any package by glob 'g++-6.2'
E: Couldn't find any package by regex 'g++-6.2'

và tôi cũng đã thử làm điều này trước đây

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

nhưng nó dường như không hoạt động. Cuối cùng khi tôi chỉ làm

sudo apt-get install gcc

nó nói rằng

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).

Tôi biết tôi vẫn cần cài đặt và định cấu hình thay thế nhưng thực hiện điều đó không hoạt động như sau

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5.3 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5.3 10
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

Xin lỗi điều này đã kết thúc khá lâu và xin vui lòng cho tôi biết nếu bạn cần thêm thông tin. Cảm ơn!

EDIT: Tôi thực sự đã làm cho nó hoạt động bằng cách thay đổi gcc-5.3 thành gcc-5 trong đoạn mã trên vì dường như đó là những gì nó được gọi trong usr / bin. Tôi sẽ giữ nó để tham khảo trong tương lai nếu có ai gặp phải vấn đề tương tự.


2
AFAIK gcc và g ++ không cài đặt làm thay thế cập nhật theo mặc định - thay vào đó, các gói gccg++phụ thuộc cài đặt các liên kết trực tiếp đến các phụ thuộc mặc định, như /usr/bin/g++ -> g++-5. Bạn đã thử chỉ đơn giản là cài đặt lại gccg++các gói?
Steeldo

Một cách để tránh loại vấn đề này là tạo VM và cài đặt phiên bản trình biên dịch cũ trong đó.
NZD

Có thể sửa lỗi hotfix này trong cài đặt Đọc danh sách gói ... Xong Xây dựng cây phụ thuộc Đọc thông tin trạng thái ... Xong gcc đã là phiên bản mới nhất (4: 7.3.0-3ubub2.1). 0 nâng cấp, 0 mới cài đặt, 0 để gỡ bỏ và 36 không nâng cấp.
JOC KERS

Câu trả lời:


5

Chạy các lệnh sau theo trình tự. Tôi đã nhận được cùng một lỗi. Điều này làm việc cho tôi.

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

9
Tại sao sudo apt-get updatephải chạy ba lần thay vì chỉ lần đầu tiên? Đặc biệt, tại sao sau khi cài đặt gói cuối cùng?
Eliah Kagan

Gcc-snapshot chính xác làm gì? Làm cách nào để xóa phiên bản gcc trước đó (4.8.4)?
abunickabhi

0

Bản cập nhật apt-get phải được chạy để máy tính của bạn sẽ truy cập vào kho lưu trữ vừa được thêm vào, do đó làm cho nội dung của nó có sẵn cho bạn. Nếu bạn không chạy nó thì máy tính của bạn không biết rằng nó có sẵn thông tin kho lưu trữ cho nó

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.