Εγκαταστήστε μια επίσημα υποστηριζόμενη (παλαιότερη) έκδοση του GCC
Εγκαταστήστε μια νεότερη έκδοση του GCC από την πηγή
Το CentOS ακολουθεί την ανάπτυξη του Red Hat Enterprise Linux (RHEL). Η RHEL προσπαθεί να είναι μια σταθερή πλατφόρμα διακομιστή, πράγμα που σημαίνει ότι δεν βιάζεται να συμπεριλάβει τις πιο πρόσφατες εκδόσεις κάθε πακέτου λογισμικού.
Από τη σύνταξη αυτού του άρθρου, το CentOS 6 διανέμει επίσημα το GCC v4.4.7. Ωστόσο, το GCC v5.1 κυκλοφόρησε πρόσφατα. Πριν από αυτό, η έκδοση 4.9.2 ήταν διαθέσιμη.
Η επίσημη πρόταση για την ανάγκη μιας πιο πρόσφατης έκδοσης του GCC είναι ότι θα πρέπει να εξετάσετε μια διαφορετική διανομή UNIX που θα επικεντρώνεται περισσότερο στην υποστήριξη των πιο πρόσφατων εκδόσεων πακέτων λογισμικού.
Ευτυχώς, μπορείτε να εγκαταστήσετε μια πιο πρόσφατη έκδοση του GCC στο CentOS, αφήνοντας την παλαιότερη έκδοση ακόμα εγκατεστημένη. Αυτό αποκλίνει από τη χρήση καθαρά του επίσημα διανεμημένου λογισμικού, αλλά μερικές φορές μπορεί να αισθάνεστε ότι έχετε λίγες επιλογές. Μπορεί να αντιμετωπίσετε κάποιες επιπλοκές. για παράδειγμα, εάν εγκαθιστάτε λειτουργικές μονάδες πυρήνα τρίτου μέρους, πρέπει να μεταγλωττιστούν χρησιμοποιώντας την ίδια έκδοση του GCC που χρησιμοποιήθηκε για τη δημιουργία του πυρήνα σας.
Αυτό το άρθρο περιγράφει πώς να εγκαταστήσετε την επίσημα υποστηριζόμενη έκδοση του GCC CentOS 6 και πώς να εγκαταστήσετε μια νεότερη έκδοση επίσης. Αυτό το άρθρο προϋποθέτει ότι έχετε ένα πρόσφατα εγκατεστημένο CentOS 6 VPS, αν και σίγουρα μπορείτε να ακολουθήσετε τις οδηγίες σε ένα υπάρχον VPS.
Εγκαταστήστε μια επίσημα υποστηριζόμενη (παλαιότερη) έκδοση του GCC
Ακόμα κι αν θέλετε να εγκαταστήσετε μια νεότερη έκδοση του GCC από την πηγή, το ίδιο το GCC είναι γραμμένο σε C++. Επομένως, πρέπει πρώτα να εγκαταστήσετε έναν παλαιότερο μεταγλωττιστή C++.
Συνδεθείτε στο VPS σας, είτε κάνοντας κλικ στην "Προβολή κονσόλας" στον πίνακα ελέγχου Vultr, είτε μέσω SSH, εάν το έχετε ρυθμίσει.
(α) Είσοδος ως root.
(β) Δημιουργήστε τον δικό σας λογαριασμό χρήστη και δώστε του έναν κωδικό πρόσβασης.
adduser <username>
passwd <username>
(γ) Επιτρέψτε στον λογαριασμό χρήστη σας να εκτελεί εντολές με δικαιώματα root, μέσω της εντολής 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.
(δ) Αποσυνδεθείτε ως root και συνδεθείτε στον λογαριασμό χρήστη σας.
Εγκαταστήστε τα πακέτα CentOS 6 GCC. Αυτό θα σας ρωτήσει εάν θέλετε να εγκαταστήσετε περίπου 11 πακέτα, λόγω εξαρτήσεων.
sudo yum install gcc gcc-c++
Ελέγξτε τις εγκατεστημένες εκδόσεις και εμφανίστε τις τοποθεσίες τους.
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++
Εγκαταστήστε μια νεότερη έκδοση του GCC από την πηγή
Εάν θέλετε μόνο την επίσημη υποστηριζόμενη έκδοση του GCC CentOS, είστε έτοιμοι. Εάν χρειάζεστε μια πιο πρόσφατη έκδοση του GCC, συνεχίστε.
ΣΠΟΥΔΑΙΟΣ! Αρχικά, ολοκληρώστε τα παραπάνω βήματα για να εγκαταστήσετε μια παλαιότερη δυαδική έκδοση του GCC.
Εγκαταστήστε επιπλέον απαιτούμενα πακέτα. Αυτό θα σας ρωτήσει εάν θέλετε να εγκαταστήσετε περίπου 41 πακέτα.
sudo yum install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
Αποφασίστε ποια έκδοση του GCC θέλετε να εγκαταστήσετε. Αυτή η εντολή θα σας δείξει τις "ετικέτες" για κάθε μία από τις διαθέσιμες εκδόσεις.
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/
Λάβετε την πηγή της έκδοσης του GCC που θέλετε. Αυτό θα τρέξει για λίγα λεπτά. Το υπόλοιπο αυτού του άρθρου είναι γραμμένο για gcc-5_1_0_release/και θα πραγματοποιήσει λήψη των πηγών στο ~/sourceInstallations/gcc_5_1_0_release/.
mkdir ~/sourceInstallations
cd ~/sourceInstallations
svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_5_1_0_release/
Λάβετε την πηγή πρόσθετων προαπαιτούμενων. Χρησιμοποιώντας την έκδοση 5.1.0, γίνεται λήψη πηγών και τις προσθέτει στην έκδοση GCC για MPFR v2.4.2, GMP 4.3.2 και 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
Εάν το VPS σας έχει μόνο 768 MB μνήμης, θα ξεμείνετε από μνήμη στο επόμενο βήμα. Εάν έχετε 1 GB μνήμης, μπορεί να είστε εντάξει, αλλά δεν είναι κακό να κάνετε αυτό το βήμα. Εάν έχετε 2 GB μνήμης ή περισσότερο, μπορείτε να παραλείψετε αυτό το βήμα. Αυτό το βήμα προσθέτει 500 MB εικονικής μνήμης, χρησιμοποιώντας ένα αρχείο ανταλλαγής.
SWAP=/tmp/swap
dd if=/dev/zero of=$SWAP bs=1M count=500
mkswap $SWAP
sudo swapon $SWAP
Κατασκευάστε το GCC. Αυτό θα λειτουργεί για ώρες. Εάν αυτό ολοκληρωθεί σωστά, η τελευταία γραμμή που θα δείτε θα λέει "επιτυχία". Είναι φυσιολογικό να βλέπετε ορισμένα μηνύματα που δείχνουν σφάλμα να μετακινούνται γρήγορα, εφόσον η κατασκευή ολοκληρώνεται και ηχεί "επιτυχία". Είναι πάντα καλή ιδέα να δημιουργείτε πράγματα σε διαφορετικό κατάλογο από έναν κατάλογο πηγής. Η τεκμηρίωση του GCC δηλώνει ότι δεν πρέπει να χρησιμοποιείτε έναν κατάλογο κατασκευής που είναι υποκατάλογος του καταλόγου προέλευσης.
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"
Εάν ρυθμίσετε ένα αρχείο ανταλλαγής στο βήμα 6, καταργήστε το. Χωρίς να κάνετε περισσότερες ρυθμίσεις, μετά από μια επανεκκίνηση, δεν θα χρησιμοποιηθεί ως αρχείο ανταλλαγής και απλώς καταλαμβάνει χώρο στον σκληρό δίσκο στο VPS σας.
sudo swapoff $SWAP
rm /tmp/swap
Ελέγξτε τις εγκατεστημένες εκδόσεις και δείτε τις τοποθεσίες τους.
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++
Προσθέστε τις νέες βιβλιοθήκες στο ld (το σύνδεσμο 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.
Προαιρετικά φτιάξτε ένα πρόγραμμα hello world.
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!
Προαιρετικά ανακτήστε χώρο στον σκληρό δίσκο. Ο ~/sourceInstallationsφάκελος σας θα καταλαμβάνει περίπου 8,0 GB. Είναι πιθανώς συνετό να διατηρήσετε τους φακέλους, καθώς υπάρχουν προαιρετικές επιλογές διαμόρφωσης που μπορεί να χρειαστεί να χρησιμοποιήσετε κάποια στιγμή στο μέλλον και θα ήταν πιο γρήγορο να έχετε ήδη κάνει πολλά. Επίσης, η διαδικασία κατασκευής δημιουργεί αρχεία καταγραφής που μπορείτε αργότερα να ελέγξετε και να εργαστείτε εάν κάτι πάει στραβά. Ωστόσο, μετά την εκτέλεση sudo make installνωρίτερα, το εγκατεστημένο GCC σας δεν εξαρτάται από τίποτα σε αυτόν τον κατάλογο και ο χώρος μπορεί να είναι υψηλότερος, επομένως μπορείτε να κάνετε αυτό το βήμα και να ανακτήσετε τα 8,0 GB περίπου.
cd ~/
rm -rf sourceInstallations
--- Again, if you can spare the space, you may someday be happy to have left it there.
Τώρα υποστηρίζεται επίσημα το CentOS σας gccκαι g++εξακολουθεί να είναι /usr/bin/, το CentOS σας υποστηρίζει επίσημα lib 32 bit στο /lib, το CentOS σας υποστηρίζει επίσημα lib 64 bit στο /lib64, και το CentOS που υποστηρίζεται επίσημα περιλαμβάνει αρχεία στο /usr/include.
Τα νεότερα σας gccκαι g++είναι in /usr/local/bin, τα νεότερα lib 32 bit στο /usr/local/lib, τα νεότερα 64 bit lib στο /usr/local/lib64, και τα νεότερα περιλαμβάνουν αρχεία στο /usr/local/include.