Verdade seja dita que eu sou simplesmente com preguiça de sair da 17,3 - isso funciona para mim. Dito isto, eu ainda precisava de um novo gcc. Para compilá-lo repetidamente para diferentes alvos Eu tenho um script bash (veja abaixo) que eu modifico e executo (estou escrevendo meu próprio sistema operacional de brinquedos, portanto, eu tenho que usar um gcc especialmente gerado).
Altere os diretórios no script abaixo para corresponder aos diretórios que você possui. Eu mantenho a versão compilada em meu próprio diretório para que eu possa alternar facilmente entre a minha versão compilada e a versão do sistema. Eu sugiro que você faça o mesmo. Você precisa baixar o binutils-2.23.2, assim como a versão do gcc que você está interessado (estou usando o 7.1.0 abaixo). Coloque-os em um diretório ~ / contrib junto com o script abaixo.
Você também pode querer mudar a linha "--enabled-languages = c" para "--enable-languages = c, c ++, objc" - meu projeto só precisa de C. Outra mudança seria o valor de PLATFORM. Eu uso "i686-elf", mas isso não vai funcionar para você (eu mudei abaixo para algo que vai funcionar para a plataforma de 32 bits). Você pode tentar "x86_64-linux-gnu" para uma plataforma de 64 bits.
Para os curiosos - o motivo pelo qual eu construí isso é porque o processo de compilação do gcc costumava ter um bug que impedia a reconstrução no diretório de origem. Eu não sei se esse bug ainda existe (eu encontrei pela última vez em 4.8.0), mas a única solução foi explicitamente construir em um diretório separado, se você quisesse reconstruir.
Espero que isso ajude.
[EDIT: Execute a instalação das dependências sugeridas acima por GAD3R]
#!/bin/bash
function die() {
echo $1
exit 127
}
export PREFIX=/home/lelanthran/opt/cross
export TARGET=i686-linux-gnu
export PATH="$PREFIX/bin:$PATH"
pushd $PWD &> /dev/null
mkdir -p build-binutils
cd build-binutils
../binutils-2.23.2/configure \
--target=$TARGET \
--prefix="$PREFIX" \
--with-sysroot \
--disable-nls \
--disable-werror || die "binutils/config error"
make || die "binutils/make error"
make install || die "binutils/make install error"
popd &> /dev/null
pushd $PWD &> /dev/null
mkdir -p build-gcc-7.1.0
cd build-gcc-7.1.0
../gcc-7.1.0/configure \
--target=$TARGET \
--prefix="$PREFIX" \
--disable-nls \
--enable-languages=c \
--without-headers || die "gcc/config error"
make all-gcc || die "gcc/make all-gcc error"
make all-target-libgcc || die "gcc/make all-target-libgcc error"
make install-gcc || die "gcc/make install-gcc error"
make install-target-libgcc || die "gcc/make install-target-libgcc error"