O caminho fácil
Se você for um desenvolvedor típico, pode instalar da maneira mais fácil, usando as instruções em http://gcc.gnu.org/wiki/InstallingGCC ou no gerenciador de pacotes do sistema, como:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
O jeito difícil
O GCC diz que a resposta aqui é "da maneira mais difícil" porque ele constrói tudo peça por peça e não usa bibliotecas compartilhadas.
Infraestrutura GCC
Obtenha a infraestrutura GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Coloque os downloads em um diretório temporário (você pode usar qualquer diretório que desejar).
/opt/downloads
Crie a infraestrutura em um diretório temporário diferente do diretório de downloads ou de seus subdiretórios:
/tmp/gcc
Configure a infraestrutura usando bibliotecas estáticas como esta:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
O sinalizador --disable-shared pode valer a pena um olhar mais atento, dependendo de suas necessidades. Eu uso --disable-shared porque estou construindo apenas código estático e quero ter certeza de que não construo nenhum código compartilhado. Minha necessidade é mover o GCC resultante pelas minhas unidades facilmente, então eu quero todo o código estático e não quero nenhum código compartilhado. Se você preferir código compartilhado, omita o sinalizador --disable-shared.
Versões
Ao executar qualquer um dos comandos nesta resposta, certifique-se de atualizar os comandos para usar o número da versão atual do GCC que corresponda às suas necessidades. Os comandos nesta resposta são para GCC 4.6.2.
Observe que a documentação do GCC diz: "Embora qualquer versão suficientemente nova das ferramentas necessárias geralmente funcione, os requisitos da biblioteca são geralmente mais rígidos. As versões mais recentes podem funcionar em alguns casos, mas é mais seguro usar as versões exatas documentadas."
GMP
GMP é a GNU Multiple Precision Arithmetic Library.
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 é a biblioteca de arredondamento de ponto flutuante de precisão múltipla GNU. Depende do 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 é a biblioteca C GNU Multiple-precision. Depende de GMP e 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
DUENDE
ELF significa Executable and Linkable Format. Esta biblioteca fornece tamanho independente de arquitetura e suporte de 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 é a coleção de compiladores GNU. Depende de GMP, MPFR, MPC e 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
Construa o gcc em um diretório temporário no mesmo ponto de montagem. (Construí-lo em / tmp desencadearia problemas de host de compilação cruzada)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
O comando configure e seus sinalizadores devem estar todos em uma linha de comando (este post os mostra em linhas separadas apenas por causa da largura da página da web).
Observação: usamos o caminho completo para configurar e não definimos as variáveis de ambiente do caminho da biblioteca. Escolhemos desabilitar o bootstrap e desabilitar as bibliotecas compartilhadas porque não as queremos (usuários típicos podem querer ambos), e usar threads posix e sinalizadores que são padrões porque os queremos (usuários típicos podem querer usar outras threads ou pular sinalizadores padrão). YMMV e leia sobre as bandeiras aqui
/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
Esta página é ótima para informações de instalação do GCC, como construí-lo, vários sinalizadores e muito mais:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Atualizações
As bibliotecas ppl podem ser usadas para otimizações de memória: consulte bugseng.com/products/ppl/Download (Obrigado Paul nos comentários)
Você pode executar ./contrib/download_prerequisites a partir do diretório de origem do gcc. (Obrigado ao N7P no reddit)
--disable-shared
está errado para a maioria das pessoas,--disable-bootstrap
pode acelerar a construção, mas pode causar falha dependendo da versão existente do gcc,--enable-libgomp
habilitado por padrão de qualquer maneira,--enable-lto
habilitado por padrão,--enable-thread-safe
não é uma opção válida,--enable-threads=posix
habilitado por padrão em algumas plataformas, não é válido em outras ,--enable-tls
ativado por padrão, ... basicamente essas instruções são muito ruinsbrew install gcc
. Consulte linuxbrew.shA resposta aceita a torna muito mais complicada do que o necessário e não é correta para todas as versões. Construir o GCC com
--disable-shared
geralmente é uma ideia muito ruim. Veja http://gcc.gnu.org/wiki/InstallingGCC para uma abordagem mais fácil.A todo processo deve ser mais difícil do que este (substituindo 4.6.2 com a versão que você quer construir):
(Mas por favor, leia o link acima mesmo assim, ele contém informações úteis.)
Aparentemente, algumas pessoas no Ubuntu têm toneladas de porcaria em seu ambiente que interfere no processo de construção do GCC, e eles precisam remover isso primeiro:
fonte
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
antes de tudo, conforme sugerido aqui: stackoverflow.com/questions/12255058/…Eu trabalho em um cluster. Apenas o nó mestre está conectado à Internet. O software nos nós está desatualizado e geralmente não é mantido. Eu não tenho acesso root. Tenho duas opções:
Escolhi o segundo e construí gcc, g ++ e gfortran.
Eu construí tudo em
e para
make
eu useiAbaixo, o gcc é construído com
Pode-se obter o gcc mais recente aqui: ftp://gcc.gnu.org/pub/gcc/releases
As dependências são encontradas aqui: ftp://gcc.gnu.org/pub/gcc/infrastructure
Dependências
Recebo dependências com o seguinte script:
A seguinte função bash é usada abaixo:
Cada um dos comandos abaixo deve ser emitido no diretório da biblioteca recém-baixada.
GMP
MPFR
MPC
ISL
CLOOG
gcc
fonte
LD_LIBRARY_PATH
para usar o GCC resultante.Usei o que Jonathan mencionou acima, exceto que tive que baixar gmp e mpfr manualmente e criar um link simbólico (a distribuição gcc 4.4.2 provavelmente não tem "download_prerequisites")
A propósito, usando "-with-gmp" e "with-mpfr" com "./configure" deu-me "configure: erro: não é possível calcular o sufixo dos arquivos objeto: não é possível compilar". Portanto, baixei os srcs do gmp e mpfr e criei o link virtual para eles de dentro do diretório gcc src top leve
fonte
Depois de tentar instalar dependências GCC, incluindo GMP, MPFR e MPC. Encontrei requisitos de instalação adicionais, Erros e arquivos ausentes; como arquivo de cabeçalho gmp.h exigido pelo MPFR para instalar. Existem vários problemas que você encontrará no processo. No entanto, há uma maneira mais fácil de construir e instalar o GCC-X.0.0 ou versão posterior com um link automático .
OPÇÃO UM.
Para evitar o trabalho de construir com make, instale e vincule as bibliotecas dinâmicas, simplesmente:
Baixe sua versão GCC-X.0.0 (com a versão mais recente em: https://gcc.gnu.org/ )
Extraia os arquivos gcc-X-000.tar.gz para um local / somepath /.
Depois de extrair o arquivo .tar.gz, execute o script ./contrib/download_prerequisites que está localizado em / somepath / ou no diretório de origem.
Este script irá baixar bibliotecas de suporte incluindo: GMP, MPFR e MPC e criar um Symlinks para você, que irá CONSTRUIR todas as dependências do gcc automaticamente como parte do processo de instalação do gcc.
Não há necessidade de criar e vincular bibliotecas de suporte que foram baixadas para / somepath / emitindo Make, Make Install ou executando o arquivo ./configure ou adicionando links como --with-gmp = / gmp_path / ... / ..... , --with-mpfr = / mpfr_path / ... / ... porque isso foi feito quando você executou o script que criou links simbólicos .
OPÇÃO DOIS.
CONFIGURAÇÃO:
Questão:
NB:
--enable-languages como c ++ ou c.
--disable-multilib ; desative o multilib com base no seu sistema e sistema operacional, você será solicitado sobre o multilib para continuar.
O make levará muito tempo para ser concluído. No entanto, você pode emitir a opção -j #no_pro. Isso executará o Make simultaneamente em paralelo com base no número de processadores em seu PC ou Mac.
Para obter informações detalhadas sobre como executar este processo, você pode visitar: https://gcc.gnu.org/wiki/InstallingGCC .
fonte
Segui a resposta mais aceita por joelparkerhenderson. Esta é a melhor resposta que pude encontrar para instalar em um sistema * NIX pela Internet.
Para a posteridade, quero acrescentar que se você receber um erro como "erro de instalação: não é possível calcular o sufixo dos arquivos objeto: não é possível compilar"
em seguida, atualize seu LD_LIBRBARY_PATH com / tmp / gcc / lib (consulte a resposta completa de joelparkerhenderson para o contexto)
/ tmp / gcc / lib contém todos os mpfr / mpc / gmp necessários para que os arquivos e o vinculador de tempo de execução não possam localizá-los, a menos que você os adicione a LD_LIBRARY_PATH. Também não se esqueça de exportar LD_LIBRARY_PATH;). Mais contexto aqui: https://gcc.gnu.org/wiki/FAQ#configure_suffix
fonte