Cách cài đặt gcc 4.7.x / 4.8.x trên CentOS


88

Cách dễ nhất để cài đặt gcc4.7.x / 4.8.x trên hệ thống với CentOS 6.2+ là gì? Gói RPM mặc định chứa phiên bản cũ hơn gcc.

Câu trả lời:


67

Tru Huynh của centos.org đã xây dựng bộ công cụ dành cho nhà phát triển 1.1 , cho centos và nó chứa gcc 4.7.2

Vì vậy, bạn có thể chỉ cần sử dụng repo của anh ấy và cài đặt chỉ gcc, ngay lập tức.

cd /etc/yum.repos.d
wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo 
yum --enablerepo=testing-1.1-devtools-6 install devtoolset-1.1-gcc devtoolset-1.1-gcc-c++

Điều này sẽ cài đặt nó rất có thể vào /opt/centos/devtoolset-1.1/root/usr/bin/

Sau đó, bạn có thể cho biết quá trình biên dịch của mình để sử dụng gcc 4.7 thay vì 4.4 với biến CC

export CC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc  
export CPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp
export CXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++

4
chạy yum --enablerepo=testing-devtools-6 install devtoolset-1.1-gcc devtoolset-1.1-gcc-c++trả về bốn giờ bốn phút, ..: hình ảnh

1
đừng quên yum clean alltrước khi thực hiện lại các bước sau thất bại, bạn vẫn sẽ nhận được 404

6
thay vì đặt các biến riêng lẻ bạn có thể làm scl enable devtoolset-1.1 bash(nó khởi động shell mới với tất cả các biến được đặt).
marcin

13
Đối với g ++ 4.8.2, thay đổi 1.1đến 2khắp mọi nơi, và thay đổi --enablerepo=testing-1.1-devtools-6để--enablerepo=testing-devtools-2-centos-6
dwurf

3
Điều này vẫn còn hoạt động? Tôi nhận được people.centos.org/tru/devtools-2/6Workstation/i386/RPMS/... : [Errno 14] PYCURL ERROR 22 - "Các URL được yêu cầu trả về lỗi: 404"
Paul Praet

42

Đây là cách lấy devtoolset-2 (bao gồm cả gcc 4.8.1)

Điều này được lấy từ http://people.centos.org/tru/devtools-2/readme

wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

Các vấn đề đã biết:

  • gói không dấu
  • CentOS-6 devtoolset-2 cần devtoolset-2-ide chứa toàn bộ ngăn xếp Eclipse, nhưng chưa xây dựng
  • CentOS-6 tất cả các tệp liên quan đến maven đều không được xây dựng

Những thay đổi chính từ devtools-1.1:

  • /opt/centos không còn được sử dụng
  • /opt/rh hiện được sử dụng làm thượng nguồn (như phiên bản SL)

1
Tôi đã phải xuất những thứ này cho nó hoạt động. Cảm ơn! xuất CC = / opt / rh / devtoolset-2 / root / usr / bin / gcc export CXX = / opt / rh / devtoolset-2 / root / usr / bin / c ++ export CPP = / opt / rh / devtoolset-2 / root / usr / bin / cpp
jemiloii

2
@JemiloII - Bạn đã làm gì scl enable devtoolset-2sau khi cài đặt? Điều đó sẽ làm việc để có được trình biên dịch chính xác trên đường dẫn.
Đánh dấu Lakata

Điều đó thực sự hoạt động tốt hơn so với xuất khẩu!
jemiloii

@MarkLakata - Chạy scl enable devtoolset-2ném lỗi sauNeed at least 3 arguments. Run scl --help to get help.
Swanidhi

3
@Swanidhi Lệnh đầy đủ là scl enable devtoolset-2 bashnơi trường cuối cùng có thể khác nếu bạn không sử dụng bash.
Đánh dấu Lakata

30

Có phiên bản mới của devtoolset 2.0. Những người tốt bụng từ Cern làm việc trên Science Linux đã tạo ra một phiên bản mở :

Nếu bạn sử dụng CentOS (không phải Khoa học Linux), thì bạn sẽ phải nhập khóa GPG của họ từ đây bằng cách sử dụng:

rpm --import http://www.scientificlinux.org/documentation/gpg/RPM-GPG-KEY-cern

Thưởng thức!


1
liên kết ở trên bị phá vỡ bây giờ, tôi tìm thấy chìa khóa tương tự ở đây: [ftp.riken.jp] ( ftp.riken.jp/Linux/cern/slc58/x86_64/RPM-GPG-KEYs/... )
Remo Harsono

21
# 1. Install a package with repository for your system:
# RHEL 6: `yum-config-manager --enable rhel-server-rhscl-6-rpmss`
# RHEL 7: `yum-config-manager --enable rhel-server-rhscl-7-rpms`
$ sudo yum install centos-release-scl # On CentOS 6/7+, install package centos-release-scl available in CentOS repository

# 2. Install the collection:
$ sudo yum install devtoolset-3

# 3. Start using software collections:
$ scl enable devtoolset-3 bash

$ sudo yum list devtoolset-3\*

1
những gì hash -rlàm gì?
codecowboy

ln -s / opt / rh / devtoolset-2 / root / usr / bin / * / usr / local / bin / broken sudo trên hệ thống Centos 6.7 của tôi. Tôi nghĩ rằng nó có thể bí danh sudo.
codecowboy

@codecowboy $PATHmỗi khi bạn gõ một lệnh bằng cách lưu các kết quả vào bộ nhớ, hash -rbuộc tải lại $ PATH
Denis Denisov

@Denji - hình như trang hop5.in không còn nữa.
slm

có thể cần thêm --nogpgchecktùy chọn: sudo yum install --nogpgcheck devtoolset-3
FooBee

2

Từ những gì tôi có thể thấy từ gnu gcc , phiên bản ổn định mới nhất là 4,62. Phiên bản 4.7 có thể được tải xuống và biên dịch, thêm thông tin về cài đặt gcc .


Tôi đã hỏi về 4.7 vì nó được cho là có một số tính năng C ++ 11 mà tôi cần (chuyển từ Clang).
Tomas Andrle

Vì vậy, ngoài việc biên dịch từ nguồn, không có trang web nào có thể sử dụng một số rpms?
Tomas Andrle

Không phải tôi biết, nhưng tôi không rành về chủ đề này. Kho lưu trữ RPM chính xác chỉ bao gồm RPM ở dạng ổn định.
bbaja42

2

không một câu trả lời nào làm việc cho tôi
ngay cả trong vỏ của devtoolset vẫn thấy gcc 4.4.7 của tôi.
Thủ thuật của tôi là như sau:

mv /usr/bin/gcc /usr/bin/gcc.bckup
ln -s /opt/centos/devtoolset-1.1/root/usr/bin/gcc /usr/bin/gcc

1

có một vấn đề với devtool1.1 vì vậy tôi đã thực hiện một số thay đổi - cuối cùng, điều này đã làm việc với tôi: lần chạy đầu tiên

yum clean all

hơn:

wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo -O /etc/yum.repos.d/devtools-1.1.repo

bây giờ hãy mở /etc/yum.repos.d/devtools-1.1.repo và thay đổi từ:

http://people.centos.org/tru/devtools-2/$releasever/$basearch/RPMS

(nếu bạn đang sử dụng x86_64) để:

http://people.centos.org/tru/devtools-1.1/6/x86_64/RPMS/ 

hoặc ((nếu bạn đang sử dụng x86))

http://people.centos.org/tru/devtools-1.1/6/i386/RPMS/

và cuối cùng chạy:

yum install devtoolset-1.1

0

Một cách để đạt được điều này là lấy các srcRPM từ kho lưu trữ của fedora và biên dịch lại chúng cho hệ thống mục tiêu của bạn.
Fedora 17và sau này cung cấpgcc 4.7

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.