CentOS theo sự phát triển của Red Hat Enterprise Linux (RHEL). RHEL phấn đấu trở thành một nền tảng máy chủ ổn định, điều đó có nghĩa là nó không vội vàng bao gồm các phiên bản mới nhất của mọi gói phần mềm.
Khi viết bài viết này, CentOS 6 chính thức phân phối GCC v4.4.7. Tuy nhiên, GCC v5.1 đã được phát hành gần đây. Trước đó, v4.9.2 đã có sẵn.
Đề xuất chính thức cần một phiên bản GCC mới hơn là bạn nên xem xét một bản phân phối UNIX khác, tập trung hơn vào việc hỗ trợ các phiên bản mới nhất của các gói phần mềm.
May mắn thay, bạn có thể cài đặt phiên bản GCC mới hơn trên CentOS, vẫn giữ phiên bản cũ hơn. Điều này đi chệch khỏi hoàn toàn sử dụng phần mềm phân phối chính thức, nhưng đôi khi bạn có thể cảm thấy như bạn có ít sự lựa chọn. Bạn có thể gặp phải một số biến chứng; ví dụ: nếu bạn đang cài đặt các mô-đun hạt nhân của bên thứ ba, chúng phải được biên dịch bằng cùng một phiên bản GCC được sử dụng để xây dựng hạt nhân của bạn.
Bài viết này mô tả cách cài đặt phiên bản GCC được hỗ trợ chính thức của CentOS 6 và cách cài đặt phiên bản mới hơn. Bài viết này giả định rằng bạn có VPS CentOS 6 mới cài đặt, mặc dù bạn chắc chắn có thể làm theo hướng dẫn trên VPS hiện có.
Cài đặt phiên bản GCC được hỗ trợ chính thức (cũ hơn)
Ngay cả khi bạn muốn cài đặt phiên bản GCC mới hơn từ nguồn, chính GCC được viết bằng C ++. Do đó, trước tiên bạn phải cài đặt trình biên dịch C ++ cũ hơn.
-
Đăng nhập vào VPS của bạn, bằng cách nhấp vào "Xem Bảng điều khiển" trong bảng điều khiển Vultr hoặc bằng SSH, nếu bạn đã thiết lập điều đó.
(a) Đăng nhập bằng root.
(b) Tạo tài khoản người dùng của riêng bạn và cung cấp cho nó mật khẩu.
adduser <username>
passwd <username>
(c) Cho phép tài khoản người dùng của bạn thực thi các lệnh với quyền root, thông qua lệnh sudo.
visudo
After the line "root ALL=(ALL) ALL"
Add the line "<username> ALL=(ALL) ALL"
--- If you aren't familiar with vi, go to the line "root ALL=(ALL) ALL".
--- Hit "o" to create a new line after that line and enter insert mode.
--- Type "<username> ALL=(ALL) ALL".
--- Hit ESC.
--- Type "ZZ" to save.
(d) Đăng xuất bằng root và đăng nhập vào tài khoản người dùng của bạn.
-
Cài đặt các gói CentOS 6 GCC. Điều này sẽ hỏi bạn nếu bạn muốn cài đặt khoảng 11 gói, do phụ thuộc.
sudo yum install gcc gcc-c++
-
Kiểm tra các phiên bản đã cài đặt và hiển thị vị trí của chúng.
gcc --version
May say: gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
g++ --version
May say: g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
which gcc
/usr/bin/gcc
which g++
/usr/bin/g++
Cài đặt phiên bản GCC mới hơn từ nguồn
Nếu bạn chỉ muốn phiên bản GCC được hỗ trợ chính thức của CentOS, bạn đã hoàn tất. Nếu bạn cần một phiên bản GCC mới hơn, hãy tiếp tục.
-
QUAN TRỌNG! Đầu tiên, hoàn thành các bước trên để cài đặt phiên bản nhị phân cũ hơn của GCC.
-
Cài đặt thêm các gói yêu cầu. Điều này sẽ hỏi bạn nếu bạn muốn cài đặt khoảng 41 gói.
sudo yum install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
-
Quyết định phiên bản GCC nào bạn muốn cài đặt. Lệnh này sẽ hiển thị cho bạn "thẻ" cho mỗi phiên bản có sẵn.
svn ls svn://gcc.gnu.org/svn/gcc/tags | grep gcc | grep release
gcc-2_95-release/
...
gcc-4_9_2_release/
gcc-5_1_0_release/
-
Lấy nguồn của phiên bản GCC bạn muốn. Điều này sẽ chạy trong một vài phút. Phần còn lại của bài viết này được viết gcc-5_1_0_release/
và sẽ tải các nguồn vào ~/sourceInstallations/gcc_5_1_0_release/
.
mkdir ~/sourceInstallations
cd ~/sourceInstallations
svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_5_1_0_release/
-
Lấy nguồn của các điều kiện tiên quyết bổ sung. Sử dụng v5.1.0, điều này tải xuống các nguồn và thêm chúng vào bản dựng GCC cho MPFR v2.4.2, GMP 4.3.2 và MPC 0.8.1.
cd gcc_5_1_0_release/
./contrib/download_prerequisites
--- Important, run this as shown, from the gcc_5_1_0_release directory.
--- Do not cd to the contrib directory
-
Nếu VPS của bạn chỉ có 768 MB bộ nhớ, bạn sẽ hết bộ nhớ trong bước tiếp theo. Nếu bạn có 1GB bộ nhớ, bạn có thể ổn, nhưng không thể làm gì bước này. Nếu bạn có 2GB bộ nhớ hoặc nhiều hơn, bạn có thể bỏ qua bước này. Bước này thêm 500 MB bộ nhớ ảo, sử dụng tệp hoán đổi.
SWAP=/tmp/swap
dd if=/dev/zero of=$SWAP bs=1M count=500
mkswap $SWAP
sudo swapon $SWAP
-
Xây dựng GCC. Điều này sẽ chạy trong nhiều giờ. Nếu điều này hoàn thành chính xác, dòng cuối cùng bạn sẽ thấy sẽ nói "thành công". Việc nhìn thấy một số thông báo tìm lỗi nhanh chóng là điều bình thường, miễn là quá trình xây dựng hoàn thành và tiếng vang "thành công". Luôn luôn là một ý tưởng tốt để xây dựng mọi thứ trong một thư mục khác với một thư mục nguồn. Tài liệu GCC nói rằng bạn không nên sử dụng thư mục xây dựng là thư mục con của thư mục nguồn.
cd ..
mkdir gcc_5_1_0_release_build/
cd gcc_5_1_0_release_build/
../gcc_5_1_0_release/configure && make && sudo make install && echo "success"
--- If your VPS has multiple cores, you can speed up the build by changing the middle part
--- of this line from "&& make &&" to "&& make -j <number of cores> &&".
--- You can see the number of cores your VPS has by running "nproc"
-
Nếu bạn thiết lập tệp hoán đổi ở bước 6, hãy xóa nó. Không cần cấu hình nhiều hơn, sau khi khởi động lại, nó sẽ không được sử dụng như một tệp hoán đổi và chỉ chiếm dung lượng ổ cứng trong VPS của bạn.
sudo swapoff $SWAP
rm /tmp/swap
-
Kiểm tra các phiên bản đã cài đặt và xem vị trí của chúng.
hash -r
(Makes your login "forget" about the previously seen locations of gcc and g++)
gcc --version
May say: gcc (GCC) 5.1.0
g++ --version
May say: g++ (GCC) 5.1.0
which gcc
/usr/local/bin/gcc
which g++
/usr/local/bin/g++
-
Thêm các thư viện mới vào ld (trình liên kết GNU).
echo "/usr/local/lib64" > usrLocalLib64.conf
sudo mv usrLocalLib64.conf /etc/ld.so.conf.d/
sudo ldconfig
--- This may say a file or two "is not an ELF file - it has the wrong magic bytes at the start."
--- You may ignore this message. It is silent about the work it successfully completed.
-
Tùy chọn thực hiện một chương trình thế giới xin chào.
mkdir ~/code
cd ~/code
Create a file main.cpp that says:
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
return 0;
}
--- One way to create this file is to run "vi main.cpp", hitting "i" to enter insert mode,
--- typing the above file, hitting ESC, and hitting "ZZ" to save.
g++ main.cpp -o main
./main
Hello World!
-
Tùy chọn lấy lại dung lượng ổ cứng. ~/sourceInstallations
Thư mục của bạn sẽ chiếm khoảng 8.0GB. Có thể là khôn ngoan để giữ các thư mục, vì có một số tùy chọn cấu hình tùy chọn mà bạn có thể cần sử dụng tại một thời điểm nào đó trong tương lai và sẽ nhanh hơn khi thực hiện được nhiều việc. Ngoài ra, quá trình xây dựng tạo ra các bản ghi mà sau này bạn có thể kiểm tra và làm việc nếu có sự cố. Nhưng, sau khi chạy sudo make install
trước đó, GCC được cài đặt của bạn không phụ thuộc vào bất cứ thứ gì trong thư mục này và dung lượng có thể ở mức cao, vì vậy bạn có thể thực hiện bước này và lấy lại 8.0GB hoặc hơn.
cd ~/
rm -rf sourceInstallations
--- Again, if you can spare the space, you may someday be happy to have left it there.
Bây giờ bạn đã có CentOS chính thức được hỗ trợ gcc
và g++
vẫn còn /usr/bin/
, CentOS của bạn chính thức được hỗ trợ libs 32 bit /lib
, CentOS của bạn chính thức hỗ trợ lib 64 bit /lib64
và CentOS của bạn chính thức được hỗ trợ bao gồm các tệp /usr/include
.
Bạn mới gcc
và g++
đang trong /usr/local/bin
libs, mới hơn 32-bit trong /usr/local/lib
, libs 64-bit mới của bạn trong /usr/local/lib64
, và bạn mới hơn bao gồm các file trong /usr/local/include
.