简单的方法
如果您是典型的开发人员,您可以使用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 代表可执行和可链接格式。该库提供独立于体系结构的大小和字节序支持。
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
配置命令及其标志必须全部在一个命令行上(这篇文章将它们显示在不同的行中,只是因为网页宽度)。
注意:我们使用全路径配置,不设置库路径环境变量。我们选择禁用引导程序和禁用共享库,因为我们不想要它们(典型用户可能想要两者),并使用 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
这个页面非常适合 GCC 安装信息、如何构建它、各种标志等等:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
更新
ppl 库可用于内存优化:请参阅 bugseng.com/products/ppl/Download(感谢 Paul 在评论中)
您可以从 gcc 源目录运行 ./contrib/download_prerequisites。(感谢reddit上的N7P)