साझा पुस्तकालयों के बिना, GMP, MPFR, MPC, ELF के साथ टुकड़ा द्वारा GCC टुकड़ा कैसे स्थापित करें?


115

मैं वर्तमान संस्करण
का उपयोग करके, निर्भरता के सही संस्करणों का उपयोग करके, पैकेज मैनेजर (जैसे यम, आरपीएम, एपीपी, डीपीकेजी) का उपयोग नहीं कर रहा हूं, और साझा पुस्तकालयों का उपयोग नहीं करके जीसीसी (जीएनयू कंपाइलर कलेक्शन) टुकड़ा कैसे स्थापित करूं ?

विशिष्ट डेवलपर्स संभवतः GCC को विशिष्ट तरीके से इंस्टॉल करना चाहते हैं, अपने पैकेज मैनेजर (yum, rpm, apt, dpkg, port, brew, आदि) का उपयोग करें या यहां दिए गए निर्देशों का पालन करें ( http://gcc.gnu.org/wiki/ InstallingGCC )।

मेरा सवाल यह है कि साझा पुस्तकालयों के बिना, टुकड़ा द्वारा जीसीसी टुकड़ा कैसे स्थापित किया जाए।

  • मैं एक पूरी तरह से स्वतंत्र जीसीसी चाहता हूं जिसे किसी भी साझा पुस्तकालयों का उपयोग किए बिना, और किसी भी साझा पुस्तकालयों का निर्माण किए बिना मेरे सिस्टम के चारों ओर ले जाया जा सकता है।
  • यह वह है जिसे जीसीसी "कठिन रास्ता" कहता है और यह विशिष्ट उपयोगकर्ताओं के लिए अनुशंसित नहीं है।

जीसीसी पर निर्भर करता है:

  • जीएमपी: जीएनयू मल्टीपल प्रिसिजन अरिथमेटिक लाइब्रेरी
  • MPFR: GNU मल्टीपल-प्रिसिजन फ्लोटिंग-पॉइंट राउंडिंग लाइब्रेरी
  • एमपीसी: जीएनयू मल्टीपल-प्रिसिजन सी लाइब्रेरी
  • ईएलएफ: निष्पादन योग्य और लिंक करने योग्य प्रारूप पुस्तकालय
  • पीपीएल: परमा पॉलीहेड्रा लाइब्रेरी (वैकल्पिक, मेमोरी ऑप्टिमाइज़ेशन के लिए)

जवाबों:


123

आसान तरीका

यदि आप एक विशिष्ट डेवलपर हैं, तो आप http://gcc.gnu.org/wiki/InstallingGCC या आपके सिस्टम पैकेज मैनेजर जैसे निर्देशों का उपयोग करके आसान तरीका स्थापित कर सकते हैं :

apt  install gcc  # for Debian, Ubuntu, etc.
yum  install gcc  # for RedHat, CentOS, etc.
brew install gcc  # for Mac OS X

मुश्किल रास्ता

जीसीसी का कहना है कि इसका उत्तर "कठिन तरीका" है क्योंकि यह सब कुछ टुकड़ा करके बनाता है, और साझा पुस्तकालयों का उपयोग नहीं करता है।

GCC अवसंरचना

GCC अवसंरचना प्राप्त करें:

ftp://gcc.gnu.org/pub/gcc/infrastructure/

एक अस्थायी निर्देशिका में डाउनलोड करें (आप जो चाहें निर्देशिका का उपयोग कर सकते हैं)।

/opt/downloads

एक अस्थायी निर्देशिका में बुनियादी ढांचे का निर्माण करें जो डाउनलोड निर्देशिका या उसके उपनिर्देशिकाओं से अलग है:

/tmp/gcc

इस तरह स्थिर पुस्तकालयों का उपयोग करके बुनियादी ढांचे को कॉन्फ़िगर करें:

./configure --disable-shared --enable-static --prefix=/tmp/gcc

- साझा-साझा ध्वज आपकी आवश्यकताओं के आधार पर करीब से देखने योग्य हो सकता है। मैं उपयोग करने योग्य साझा करता हूं क्योंकि मैं केवल स्थिर कोड बना रहा हूं, और मैं यह सुनिश्चित करना चाहता हूं कि मैं कोई साझा कोड नहीं बनाऊं। मेरी आवश्यकता मेरे ड्राइव पर परिणामी GCC को आसानी से स्थानांतरित करने की है, इसलिए मुझे सभी स्थिर कोड चाहिए, और मुझे कोई साझा कोड नहीं चाहिए। यदि आप साझा कोड पसंद करते हैं, तो - साझा-साझा किए गए ध्वज को छोड़ दें।

संस्करण

जब आप इस उत्तर में किसी भी कमांड को चलाते हैं, तो अपनी आवश्यकताओं से मेल खाने वाले वर्तमान जीसीसी संस्करण संख्या का उपयोग करने के लिए कमांड को अपडेट करना सुनिश्चित करें। इस उत्तर में आदेश GCC 4.6.2 के लिए हैं।

ध्यान दें कि जीसीसी प्रलेखन कहता है: "जबकि आवश्यक उपकरणों के किसी भी पर्याप्त नए संस्करण में आमतौर पर काम होता है, पुस्तकालय की आवश्यकताएं आम तौर पर सख्त होती हैं। नए संस्करण कुछ मामलों में काम कर सकते हैं, लेकिन यह दस्तावेज के सटीक संस्करणों का उपयोग करने के लिए सुरक्षित है।"

जीएमपी

GMP GNU मल्टीपल प्रिसिजन अरिथमेटिक लाइब्रेरी है।

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install

MPFR

MPFR जीएनयू मल्टीपल-प्रिसिजन फ्लोटिंग-पॉइंट राउंडिंग लाइब्रेरी है। यह GMP पर निर्भर करता है।

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install

एमपीसी

MPC GNU मल्टीपल-प्रिसिजन C लाइब्रेरी है। यह GMP और MPFR पर निर्भर करता है।

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install

ELF

ELF का अर्थ है निष्पादन योग्य और लिंक योग्य प्रारूप। यह पुस्तकालय वास्तुकला-स्वतंत्र आकार और एंडियन समर्थन प्रदान करता है।

wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install

जीसीसी

जीसीसी जीएनयू कंपाइलर संग्रह है। यह GMP, MPFR, MPC और ELF पर निर्भर करता है।

wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz

उसी आरोह बिंदु पर एक स्क्रैच डायरेक्टरी में gcc बनाएँ। (/ Tmp के भीतर इसका निर्माण क्रॉस कम्पाइल होस्ट मुद्दों को ट्रिगर करेगा)

mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch

कॉन्फ़िगर कमांड और उसके झंडे सभी एक कमांड लाइन पर होने चाहिए (यह पोस्ट वेब पेज की चौड़ाई के कारण उन्हें अलग-अलग लाइनों पर दिखाता है)।

नोट: हम लाइब्रेरी पथ पर्यावरण चर को सेट करने और कॉन्फ़िगर करने के लिए पूर्ण पथ का उपयोग करते हैं। हम बूटस्ट्रैप को अक्षम करने और साझा पुस्तकालयों को अक्षम करने का विकल्प चुनते हैं क्योंकि हम उन्हें नहीं चाहते हैं (विशिष्ट उपयोगकर्ता दोनों चाहते हैं), और पॉज़िक्स थ्रेड्स का उपयोग कर सकते हैं और झंडे जो डिफॉल्ट हैं क्योंकि हम उन्हें चाहते हैं (विशिष्ट उपयोगकर्ता अन्य थ्रेड्स का उपयोग करना चाहते हैं या छोड़ सकते हैं डिफ़ॉल्ट झंडे)। YMMV और झंडे के बारे में यहाँ पढ़ें

/opt/downloads/gcc-4.6.2/configure
  --disable-shared
  --disable-bootstrap
  --disable-libstdcxx-pch
  --enable-languages=all
  --enable-libgomp
  --enable-lto
  --enable-threads=posix
  --enable-tls
  --with-gmp=/tmp/gcc
  --with-mpfr=/tmp/gcc
  --with-mpc=/tmp/gcc
  --with-libelf=/tmp/gcc
  --with-fpmath=sse
make && make install

यह पृष्ठ GCC स्थापना जानकारी, इसे बनाने के लिए, विभिन्न झंडे, और बहुत कुछ के लिए बहुत अच्छा है:

http://www.acsu.buffalo.edu/~charngda/cc_build.html

अपडेट

पीपीएल लाइब्रेरीज़ का उपयोग मेमोरी ऑप्टिमाइज़ेशन के लिए किया जा सकता है: बग्स देखें। इंप्रूव्ड्स /ppl/Download (टिप्पणियों में पॉल का धन्यवाद करें)

आप चला सकते हैं। जीसीसी स्रोत निर्देशिका से /contrib/download_prerequisites चला सकते हैं। (रेडिट पर एन 7 पी के लिए धन्यवाद)


2
FYI करें नए GCC 4.6.3 के लिए उपरोक्त संस्करण संख्याओं को अपडेट करना सुनिश्चित करें (या जब भी आप ऐसा कर रहे हों तो वर्तमान हो)
joelparkerhenderson

12
आप चला सकते हैं। जीसीसी स्रोत निर्देशिका से /contrib/download_prerequisites चला सकते हैं। यह टिप्पणी Reddit पर N7P के लिए धन्यवाद है।
२२:५० पर जौल्पारपेरहेन्डरसन

3
नहीं, बूटस्ट्रैपिंग इस पर निर्भर नहीं करती है। इसका उपयोग करने के लिए समझ में आता है - GMP, MPFR और MPC के निर्माण के लिए-साझा-साझा लेकिन GCC के लिए ही नहीं (और डाउनलोड_prerequisites स्क्रिप्ट का उपयोग करने का मतलब है कि आपको मैन्युअल रूप से वैसे भी GMP, MPFR और MPC बनाने की आवश्यकता नहीं है)। जीसीसी का निर्माण हमेशा डिफ़ॉल्ट रूप से स्थिर लिबास और साझा लिबास का निर्माण करता है, -उपयोग योग्य-साझा का मतलब है कि आपको कोई साझा लिबास नहीं मिलता है, जो कि ज्यादातर लोगों के लिए गलत विकल्प है।
जोनाथन वेकली

8
--disable-sharedअधिकांश लोगों के लिए गलत है, --disable-bootstrapनिर्माण में तेजी ला सकता है, लेकिन यह मौजूदा gcc संस्करण के आधार पर विफल होने का कारण हो सकता है, --enable-libgompवैसे भी डिफ़ॉल्ट रूप से --enable-ltoसक्षम है, डिफ़ॉल्ट रूप से सक्षम है, --enable-thread-safeएक वैध विकल्प --enable-threads=posixनहीं है, कुछ प्लेटफार्मों पर डिफ़ॉल्ट रूप से सक्षम है, दूसरों पर मान्य नहीं है। , --enable-tlsडिफ़ॉल्ट रूप से सक्षम, ... मूल रूप से ये निर्देश बहुत खराब हैं
जोनाथन वेकली

1
आप अपने घर निर्देशिका में gcc (और वैकल्पिक रूप से glibc) को स्थापित करने के लिए Linuxbrew का उपयोग कर सकते हैं brew install gcc। देखें linuxbrew.sh
शॉन जैकमैन

118

स्वीकार किए जाते हैं जवाब यह बनाता है अब तक अधिक आवश्यकता से जटिल और सभी संस्करणों के लिए सही नहीं है। GCC का निर्माण --disable-sharedआमतौर पर एक बहुत बुरा विचार है। एक आसान दृष्टिकोण के लिए http://gcc.gnu.org/wiki/InstallingGCC देखें ।

पूरे प्रक्रिया इस (संस्करण आप बनाना चाहते हैं के साथ 4.6.2 की जगह) से अधिक नहीं मुश्किल होना चाहिए:

tar xzf gcc-4.6.2.tar.gz
cd gcc-4.6.2
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
$PWD/../gcc-4.6.2/configure --prefix=$HOME/GCC-4.6.2 
make
make install

(लेकिन कृपया ऊपर दिए गए लिंक को वैसे भी पढ़ें, इसमें उपयोगी जानकारी है।)

स्पष्ट रूप से उबंटू के कुछ लोगों के पास अपने वातावरण में टन क्रैप सेट है जो जीसीसी निर्माण प्रक्रिया में हस्तक्षेप करता है, और उन्हें पहले हटाने की जरूरत है:

unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH

2
नहीं, कोई गायब कदम नहीं है
जोनाथन वैक्ली

2
@ user2023370, जीसीसी जानता है कि अपने सभी हेडर और लाइब्रेरी को कैसे खोजना है, निश्चित रूप से। डायनामिक लिंकर को पुस्तकालयों को खोजने के तरीके को बताने के लिए आपको LD_LIBRARY_PATH को सेट करना होगा (क्योंकि जब आप एक निष्पादन योग्य GCC नहीं चला रहे हैं), तो gcc.gnu.org/onbuildocs/libstatc++/faq.html#faq.how_to_set_paths
जोनाथन Wakely को देखें।

2
@einpoklum, तब आपका "ऐसा कुछ" समान नहीं था। काम के ऊपर कदम। वे मेरे लिए नियमित रूप से काम करते हैं, जीसीसी के सभी संस्करण के साथ। वे सैकड़ों लोगों के लिए काम करते हैं।
योनातन वेखली

3
भविष्य के संदर्भ के लिए, इसने मेरे लिए gcc-5.4.0 के लिए काम किया। केवल एक चीज का उल्लेख नहीं किया गया था कि मुझे unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATHयहाँ सुझाए गए अन्य चीजों से पहले करना था : stackoverflow.com/questions/12255058/…
Cantfindname

4
यह मेरे लिए gcc 6.2.0 के साथ काम किया और निश्चित रूप से स्वीकृत उत्तर होना चाहिए! (यह ऑपरेटिंग सिस्टम / वर्जन आदि पर काम करता है)
डेविड डोरिया

25

मैं एक क्लस्टर पर काम करता हूं। केवल मास्टर नोड इंटरनेट से जुड़ा है। नोड्स पर सॉफ्टवेयर पुराना है और आमतौर पर इसका रखरखाव नहीं किया जाता है। मेरा रूट एक्सेस नहीं है। मेरे पास दो विकल्प हैं:

  • स्थिर सॉफ्टवेयर का निर्माण करें, जिसकी मुझे आवश्यकता है (कम्प्यूटेशनल पैकेज); या
  • स्थिर संकलक बनाएँ।

मैंने दूसरा और जीसीसी बनाया, जी ++ और गैफरान।

मैंने सब कुछ अंदर बनाया

PREFIX=$HOME/cmp/soft/sft

और makeमैं इस्तेमाल के लिए

THREADS=8

नीचे, gcc के साथ बनाया गया है

  • जीएमपी
  • MPFR
  • एमपीसी
  • आइएसएल
  • CLOOG

नवीनतम gcc यहाँ से प्राप्त कर सकते हैं: ftp://gcc.gnu.org/pub/gcc/releases

यहां निर्भरताएं पाई जाती हैं: ftp://gcc.gnu.org/pub/gcc/infrastructure

निर्भरता

मुझे निम्नलिखित स्क्रिप्ट के साथ निर्भरताएं मिलती हैं:

#!/bin/sh

# ===========
## variables:

GMP=gmp-4.3.2.tar.bz2
MPFR=mpfr-2.4.2.tar.bz2
MPC=mpc-0.8.1.tar.gz
ISL=isl-0.12.2.tar.bz2
CLOOG=cloog-0.18.1.tar.gz

MIRROR=ftp://gcc.gnu.org/pub/gcc/infrastructure


# ===========
## functions:

extract() {
    if [ -f $1 ]; then
        case $1 in
            *.tar.bz2)   tar xvjf $1    ;;
            *.tar.gz)    tar xvzf $1    ;;
            *.bz2)       bunzip2 $1     ;;
            *.rar)       unrar x $1     ;;
            *.gz)        gunzip $1      ;;
            *.tar)       tar xvf $1     ;;
            *.tbz2)      tar xvjf $1    ;;
            *.tgz)       tar xvzf $1    ;;
            *.zip)       unzip $1       ;;
            *.Z)         uncompress $1  ;;
            *.7z)        7z x $1        ;;
            *)           echo "I don't know how to extract '$1'..." ;;
        esac
    else
        echo "'$1' is not a valid file!"
    fi
}

# ======================
## download and extract:

wget $MIRROR/$GMP
extract $GMP

wget $MIRROR/$MPFR
extract $MPFR

wget $MIRROR/$MPC
extract $MPC

wget $MIRROR/$ISL
extract $ISL

wget $MIRROR/$CLOOG
extract $CLOOG

निम्नलिखित बैश फ़ंक्शन का उपयोग नीचे किया गया है:

mkdircd () { mkdir -p "$@" && eval cd "\"\$$#\""; }

नीचे दिए गए प्रत्येक आदेश को केवल डाउनलोड किए गए परिवाद के डायर में जारी किया जाना है।

जीएमपी

mkdircd build
../configure --disable-shared --enable-static --prefix=$PREFIX/gmp
make -j $THREADS && make check && make install

MPFR

mkdircd build
../configure --with-gmp=$PREFIX/gmp --disable-shared --enable-static --prefix=$PREFIX/mpfr
make -j $THREADS && make install

एमपीसी

mkdircd build
../configure --with-gmp=$PREFIX/gmp --with-mpfr=$PREFIX/mpfr --disable-shared --enable-static --prefix=$PREFIX/mpc
make -j $THREADS && make install

आइएसएल

mkdircd build
../configure --with-gmp-prefix=$PREFIX/gmp --disable-shared --enable-static --prefix=$PREFIX/isl
make -j $THREADS && make install

CLOOG

mkdircd build
../configure --with-gmp-prefix=$PREFIX/gmp --with-isl-prefix=$PREFIX/isl --disable-shared --enable-static --prefix=$PREFIX/cloog
make -j $THREADS && make install

जीसीसी

mkdircd build
export LD_LIBRARY_PATH=$PREFIX/gmp/lib:$PREFIX/mpfr/lib:$PREFIX/mpc/lib:$PREFIX/isl/lib:$PREFIX/cloog/lib
export C_INCLUDE_PATH=$PREFIX/gmp/include:$PREFIX/mpfr/include:$PREFIX/mpc/include:$PREFIX/isl/include:$PREFIX/cloog/include
export CPLUS_INCLUDE_PATH=$PREFIX/gmp/include:$PREFIX/mpfr/include:$PREFIX/mpc/include:$PREFIX/isl/include:$PREFIX/cloog/include
../configure --with-gmp=$PREFIX/gmp --with-mpfr=$PREFIX/mpfr --with-mpc=$PREFIX/mpc --with-isl=$PREFIX/isl --with-cloog=$PREFIX/cloog --disable-shared --enable-static --disable-multilib --prefix=$PREFIX/gcc --enable-languages=c,c++,fortran
make -j $THREADS bootstrap && make install

1
यह अनावश्यक रूप से जटिल है, मेरे जवाब में कदम भी रूट एक्सेस के बिना, एक स्टेटिकली-लिंक्ड जीसीसी का निर्माण करते हैं, और आपको LD_LIBRARY_PATHपरिणामस्वरूप जीसीसी का उपयोग करने के लिए सेट करने की आवश्यकता नहीं है ।
जोनाथन वैक्ली

यह उन परिस्थितियों में भी काम करता है, जहां "अच्छी तरह से परिभाषित" पथों में स्थापित किए गए कुछ के साथ संघर्ष होता है (यानी, ऐसे मामले जहां मानक प्रक्रिया एकमुश्त काम करने में विफल रहती है)। नवीनतम संस्करण 2017-06-19 के रूप में: gmp-6.1.2 mpfr-3.1.5 mpc-1.0.3 isl-0.16.1 क्लॉग-0.18.4 gcc-7.1.0
माइकल गोल्डस्मीन

7

ऊपर जोनाथन ने जो उल्लेख किया है उसका उपयोग किया है, सिवाय इसके कि मुझे gmp और mpfr को मैन्युअल रूप से डाउनलोड करना है और सॉफ्ट लिंक बनाना है (gcc 4.4.2 वितरण में शायद "download_prerequisites" नहीं है)

cd src/gcc-4.4.2
ln -s ~/linux64/gmp-4.2.1  gmp
ln -s ~/linux64/mpfr-2.3.0 mpfr

Btw, "-with-gmp" और "with-mpfr" के साथ ./configure "का उपयोग करके मुझे" कॉन्फ़िगर: त्रुटि: ऑब्जेक्ट फ़ाइलों के प्रत्यय की गणना नहीं की जा सकती: संकलन नहीं कर सकता "। इसलिए मैंने gmp और mpfr के srcs डाउनलोड किए और फिर इसे gcc src top leve dir के भीतर से सॉफ्ट लिंक बनाया


2

GMP, MPFR और MPC सहित GCC निर्भरता स्थापित करने की कोशिश करने के बाद मैं अतिरिक्त इंस्टॉल आवश्यकताओं, त्रुटियों और लापता फ़ाइलों में भाग गया; जैसे कि gmp.h हेडर फ़ाइल को स्थापित करने के लिए MPFR द्वारा आवश्यक है। इस प्रक्रिया में आपके द्वारा चलाए जाने वाले कई समस्याएँ हैं। हालाँकि, स्वचालित लिंकिंग के साथ GCC-X.0.0 या बाद के संस्करण को बनाने और स्थापित करने का एक आसान तरीका है ।

विकल्प एक।

बनाने के साथ भवन की परेशानी को बचाने के लिए, गतिशील पुस्तकालयों को स्थापित करें और लिंक करें, बस:

  • अपना GCC-X.0.0 -version डाउनलोड करें (नवीनतम संस्करण से: https://gcc.gnu.org/ )

  • किसी स्थान / somepath / के लिए gcc-X-000.tar.gz फ़ाइलों को निकालें।

  • एक बार जब आपके पास .tar.gz फ़ाइल निकाली जाती है, तो चलाएँ ./contrib/download_prerequisites स्क्रिप्ट जो / somepath / या स्रोत निर्देशिका पर स्थित है।

  • यह स्क्रिप्ट समर्थन पुस्तकालयों को डाउनलोड करेगी: GMP, MPFR और MPC और आपके लिए एक सिम्बलिंक बनाएगी , जो कि gcc इंस्टॉलेशन प्रक्रिया के भाग के रूप में स्वचालित रूप से सभी gcc निर्भरता का निर्माण करेगी ।

    निर्माण / लिंक समर्थन पुस्तकालयों की जरूरत नहीं है जो / somepath / को डाउनलोड , मेक इनस्टॉल या रनिंग ./configure फ़ाइल या लिंक जैसे --with-gmp = / gmp_path / ... / ..... जारी करके / डाउनलोड किए गए थे । , --with-mpfr = / mpfr_path / ... / ... क्योंकि यह किया गया था जब आप स्क्रिप्ट बनाया है कि भाग गया सिमलिंक

विकल्प दो।

  • मानक सिस्टम स्थान में समर्थन पुस्तकालयों को स्थापित करने के लिए अपने ओएस पैकेज प्रबंधन प्रणाली का उपयोग करें। उबंटू सहित डेबियन आधारित प्रणाली के लिए, libgmp-dev, libmpfr-dev और libmpc-dev संकुल स्थापित करें। फेडोरा और SUSE सहित RPM आधारित प्रणाली के लिए, gmp-devel, और libmpc-devel ( SUSE पर mpc-devel ) संकुल स्थापित करें।
  • यह विकल्प एक मानक प्रणाली निर्देशिका में पुस्तकालयों और हेडर फ़ाइलों को स्थापित करेगा जहां वे जीसीसी का निर्माण करते समय स्वचालित रूप से पाए जाएंगे।
  • यह OS पैकेज इंस्टॉलेशन मैनेजमेंट का लाभ है जब आप "sudo apt-get install libgmp-dev" या "sudo apt-get install libmpfr-dev" इंस्टॉल करते हैं और लिंकिंग आपके लिए किया जाता है। इसके अलावा, आपको Make, Make install या ./configure के साथ सपोर्ट लाइब्रेरी बनाना है साथ ही, इस प्रक्रिया को पूरी करने में कुछ मिनट लगते हैं।
  • अब आप जीसीसी इंस्टॉलेशन के साथ आगे बढ़ सकते हैं।

विन्यास:

This is the GCC config Process, with gcc-X-000.tar.gz 

मुद्दा:

tar -xvf gcc-X-000.tar.gz 
cd gcc-X-000
./contrib/download_prerequisites
cd ..
mkdir objdir
/../gcc-X-000/configure --prefix=$HOME/gcc-X-000 --enable-languages=c,c++,fortran,go --disable-multilib
make -j 2
make install

ध्यान दें:

--enable-languages जैसे c ++ या c।

- जाने योग्य-बहुलीब ; अपने सिस्टम और OS के आधार पर मल्टीबिल को अक्षम करें, आपको आगे बढ़ने के लिए मल्टीबिल के बारे में संकेत दिया जाएगा।

मेक को पूरा होने में लंबा समय लगेगा। हालाँकि, आप विकल्प -j #no_pro जारी कर सकते हैं। यह आपके पीसी या मैक पर प्रोसेसर की संख्या के आधार पर समवर्ती बना देगा।

इस प्रक्रिया को निष्पादित करने के बारे में विस्तृत जानकारी के लिए आप यहां जा सकते हैं: https://gcc.gnu.org/wiki/InstallingGCC


1

मैंने joelparkerhenderson द्वारा शीर्ष स्वीकृत उत्तर का पालन किया। यह सबसे अच्छा उत्तर है जो मुझे इंटरनेट पर * NIX सिस्टम पर स्थापित करने के लिए मिल सकता है।

पोस्टरिटी के लिए मैं यह जोड़ना चाहता हूं कि यदि आपको कोई त्रुटि मिलती है जैसे "इंस्टॉल त्रुटि: ऑब्जेक्ट फ़ाइलों के प्रत्यय की गणना नहीं कर सकता है: आप इसे कंपेयर कर सकते हैं"

फिर अपने LD_LIBRBARY_PATH को / tmp / gcc / lib के साथ अपडेट करें (संदर्भ के लिए joelparkerhenderson का पूर्ण उत्तर देखें)

/ tmp / gcc / lib में सभी आवश्यक mpfr / mpc / gmp फ़ाइलें हैं और रन टाइम लिंकर cannt उन्हें नहीं खोजता जब तक कि आप उन्हें LD_LIBRARY_PATH में नहीं जोड़ते। इसके अलावा LD_LIBRARY_PATH;) को निर्यात करना न भूलें। यहां अधिक संदर्भ: https://gcc.gnu.org/wiki/FAQ#configure_suffix


केवल संकलक का उपयोग करने के लिए अपने LD_LIBRARY_PATH को अपडेट करने के बाद गूंगा है। यदि आप इसके बजाय stackoverflow.com/a/10662297/981959 का उपयोग करते हैं जो आवश्यक नहीं है।
जोनाथन वैक्ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.