简单的方法
如果您是典型的开发人员,则可以使用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
在与downloads目录或其子目录不同的temp目录中构建基础结构:
/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
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
该页面非常适合GCC安装信息,如何构建它,各种标志以及更多内容:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
更新
ppl库可用于内存优化:请参见bugseng.com/products/ppl/Download(感谢Paul的评论)
您可以从gcc源目录运行./contrib/download_prerequisites。(感谢reddit上的N7P)