这篇文章主要讲解了“如何安装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基础架构:
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是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是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是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代表可执行和可链接格式。这个库提供了独立于架构的大小和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是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这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。