溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何安裝GMP,MPFR,MPC,ELF

發(fā)布時(shí)間:2021-11-15 16:24:19 來源:億速云 閱讀:2077 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“如何安裝GMP,MPFR,MPC,ELF”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何安裝GMP,MPFR,MPC,ELF”吧!

如何使用當(dāng)前版本, 使用正確版本的依賴關(guān)系,不使用包管理器(如yum,rpm,apt,dpkg)并且不使用共享庫,來逐塊安裝GCC(GNU編譯器集合)?

典型的開發(fā)人員可能希望以典型的方式安裝GCC,使用你的軟件包管理器(yum,rpm,apt,dpkg,port,brew等)或按照這里的說明進(jìn)行操作

我的問題是如何安裝GCC一片一片,沒有共享庫。

  • 我想要一個(gè)完全獨(dú)立的GCC,它可以在不使用任何共享庫的情況下在我的系統(tǒng)中移動(dòng),也不需要?jiǎng)?chuàng)建任何共享庫。

  • 這就是海灣合作委員會(huì)稱之為“困難的方式”,不建議典型用戶使用。

GCC取決于:

  • GMP:GNU多精度算術(shù)庫

  • MPFR:GNU多精度浮點(diǎn)舍入庫

  • MPC:GNU多精度C庫

  • ELF:可執(zhí)行和可鏈接的格式庫

  • PPL:帕爾馬多面體庫(可選,用于內(nèi)存優(yōu)化)

---------------------------------------

簡單的方法

如果您是典型的開發(fā)人員,可以使用http://gcc.gnu.org/wiki/InstallingGCC或系統(tǒng)軟件包管理器中的說明安裝簡單的方法,例如:

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

艱難的路

海灣合作委員會(huì)說這里的答案是“困難的方式”,因?yàn)樗鼧?gòu)建了一塊一塊地,并且不使用共享庫。

GCC基礎(chǔ)設(shè)施

獲取GCC基礎(chǔ)架構(gòu):

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

把下載文件放到一個(gè)臨時(shí)目錄中(你可以使用任何你想要的目錄)。

/opt/downloads

在與下載目錄或其子目錄不同的臨時(shí)目錄中構(gòu)建基礎(chǔ)架構(gòu):

/tmp/gcc

使用如下靜態(tài)庫配置基礎(chǔ)架構(gòu):

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

取決于您的需求,--disable-shared標(biāo)志可能值得仔細(xì)看看。我使用--disable-shared,因?yàn)槲抑粯?gòu)建靜態(tài)代碼,并且我想確保不會(huì)構(gòu)建任何共享代碼。我的需求是將驅(qū)動(dòng)器的結(jié)果輕松移動(dòng)到我的驅(qū)動(dòng)器中,所以我需要所有靜態(tài)代碼,而且我不需要任何共享代碼。如果您更喜歡共享代碼,請(qǐng)忽略--disable-shared標(biāo)志。

版本

當(dāng)您在此答案中運(yùn)行任何命令時(shí),請(qǐng)務(wù)必更新命令以使用符合您需要的當(dāng)前GCC版本號(hào)。此答案中的命令適用于GCC 4.6.2。

請(qǐng)注意,GCC文檔中提到:“雖然任何新版本的必需工具通常都能正常工作,但庫要求通常更加嚴(yán)格,在某些情況下,新版本可能會(huì)有效,但使用記錄的確切版本更安全。

GMP

GMP是GNU多精度算術(shù)庫。

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是GNU多精度浮點(diǎn)舍入庫。這取決于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

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代表可執(zhí)行和可鏈接格式。這個(gè)庫提供了獨(dú)立于架構(gòu)的大小和endian支持。

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

GCC

GCC是GNU編譯器集合。它取決于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

在同一個(gè)掛載點(diǎn)的臨時(shí)目錄中構(gòu)建gcc。(在/ tmp中構(gòu)建它會(huì)觸發(fā)交叉編譯主機(jī)問題)

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

configure命令及其標(biāo)志必須全部位于一個(gè)命令行上(這篇文章僅僅是因?yàn)榫W(wǎng)頁寬度而在單獨(dú)的行中顯示它們)。

注意:我們使用完整路徑進(jìn)行配置,不要設(shè)置庫路徑環(huán)境變量。我們選擇禁用引導(dǎo)并禁用共享庫,因?yàn)槲覀儾幌M鼈儯ǖ湫陀脩艨赡芡瑫r(shí)需要這兩者),并且使用posix線程和由于我們需要而默認(rèn)的標(biāo)志(典型用戶可能想要使用其他線程或跳過默認(rèn)標(biāo)志)。YMMV并閱讀有關(guān)這里的旗幟

/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

使它遠(yuǎn)遠(yuǎn)超過必要的復(fù)雜,并不適用于所有版本的正確。構(gòu)建海灣合作委員會(huì)--disable-shared通常是一個(gè)非常糟糕的主意。有關(guān)更簡單的方法,請(qǐng)參閱http://gcc.gnu.org/wiki/InstallingGCC。

整個(gè)過程應(yīng)該是沒有比這(與你想建立的版本替換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

很顯然,Ubuntu上的一些人在其環(huán)境中設(shè)置了大量垃圾,這會(huì)干擾GCC構(gòu)建過程,他們需要首先刪除它們:

unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH

感謝各位的閱讀,以上就是“如何安裝GMP,MPFR,MPC,ELF”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何安裝GMP,MPFR,MPC,ELF這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI