gpt4 book ai didi

gcc - 如何在没有共享库的情况下使用 GMP、MPFR、MPC、ELF 逐个安装 GCC?

转载 作者:行者123 更新时间:2023-12-03 04:40:52 25 4
gpt4 key购买 nike

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

典型的开发人员可能希望以典型的方式安装 GCC,使用包管理器(yum、rpm、apt、dpkg、port、brew 等)或按照此处的说明进行操作 ( http://gcc.gnu.org/wiki/InstallingGCC )。

我的问题是如何在没有共享库的情况下逐段安装GCC。

  • 我想要一个完全独立的 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 因为我只构建静态代码,并且我想确保我不构建任何共享代码。我的需要是轻松地在我的驱动器中移动生成的 GCC,所以我想要所有静态代码,并且我不想要任何共享代码。如果您更喜欢共享代码,请省略 --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 代表可执行和可链接格式。该库提供与体系结构无关的大小和字节序支持。

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

配置命令及其标志必须全部位于一个命令行上(本文将它们显示在单独的行上,只是因为网页宽度)。

注意:我们使用完整路径来配置,不设置库路径环境变量。我们选择禁用 Bootstrap 和禁用共享库,因为我们不想要它们(典型用户可能想要两者),并使用 posix 线程和默认标志,因为我们想要它们(典型用户可能想要使用其他线程或跳过默认标志)。 YMMV 并阅读有关标志 here 的信息

/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 库可用于内存优化:请参阅 bugseng.com/products/ppl/Download(感谢评论中的 Paul)

您可以从 gcc 源目录运行 ./contrib/download_precessions。 (感谢 reddit 上的 N7P)

关于gcc - 如何在没有共享库的情况下使用 GMP、MPFR、MPC、ELF 逐个安装 GCC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com