温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何安装GMP,MPFR,MPC,ELF

发布时间:2021-11-15 16:24:19 来源:亿速云 阅读:2125 作者:iii 栏目:大数据

这篇文章主要讲解了“如何安装GMP,MPFR,MPC,ELF”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何安装GMP,MPFR,MPC,ELF”吧!

如何使用当前版本, 使用正确版本的依赖关系,不使用包管理器(如yum,rpm,apt,dpkg)并且不使用共享库,来逐块安装GCC(GNU编译器集合)?

典型的开发人员可能希望以典型的方式安装GCC,使用你的软件包管理器(yum,rpm,apt,dpkg,port,brew等)或按照这里的说明进行操作

我的问题是如何安装GCC一片一片,没有共享库。

  • 我想要一个完全独立的GCC,它可以在不使用任何共享库的情况下在我的系统中移动,也不需要创建任何共享库。

  • 这就是海湾合作委员会称之为“困难的方式”,不建议典型用户使用。

GCC取决于:

  • GMP:GNU多精度算术库

  • MPFR:GNU多精度浮点舍入库

  • MPC:GNU多精度C库

  • ELF:可执行和可链接的格式库

  • PPL:帕尔马多面体库(可选,用于内存优化)

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

简单的方法

如果您是典型的开发人员,可以使用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

取决于您的需求,--disable-shared标志可能值得仔细看看。我使用--disable-shared,因为我只构建静态代码,并且我想确保不会构建任何共享代码。我的需求是将驱动器的结果轻松移动到我的驱动器中,所以我需要所有静态代码,而且我不需要任何共享代码。如果您更喜欢共享代码,请忽略--disable-shared标志。

版本

当您在此答案中运行任何命令时,请务必更新命令以使用符合您需要的当前GCC版本号。此答案中的命令适用于GCC 4.6.2。

请注意,GCC文档中提到:“虽然任何新版本的必需工具通常都能正常工作,但库要求通常更加严格,在某些情况下,新版本可能会有效,但使用记录的确切版本更安全。

GMP

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是GNU多精度浮点舍入库。这取决于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代表可执行和可链接格式。这个库提供了独立于架构的大小和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

在同一个挂载点的临时目录中构建gcc。(在/ tmp中构建它会触发交叉编译主机问题)

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

configure命令及其标志必须全部位于一个命令行上(这篇文章仅仅是因为网页宽度而在单独的行中显示它们)。

注意:我们使用完整路径进行配置,不要设置库路径环境变量。我们选择禁用引导并禁用共享库,因为我们不希望它们(典型用户可能同时需要这两者),并且使用posix线程和由于我们需要而默认的标志(典型用户可能想要使用其他线程或跳过默认标志)。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

使它远远超过必要的复杂,并不适用于所有版本的正确。构建海湾合作委员会--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

很显然,Ubuntu上的一些人在其环境中设置了大量垃圾,这会干扰GCC构建过程,他们需要首先删除它们:

unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH

感谢各位的阅读,以上就是“如何安装GMP,MPFR,MPC,ELF”的内容了,经过本文的学习后,相信大家对如何安装GMP,MPFR,MPC,ELF这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI