Script de compilação automatica do GCC

Publicado por Mário RPG (última atualização em 25/07/2012)

[ Hits: 5.506 ]

Homepage: www.fsfla.org

Download scriptgcc-4.6.3.sh




Script em bash que baixa e compila o GCC-4.6.3 automaticamente,

O script é composto da simples execução de comandos, tornado fácil a sua leitura e correção de bugs.

Como executá-lo:

Baixe o script e abre um terminal e digite:

$ time sudo bash scriptgcc-4.6.3.sh

  



Esconder código-fonte

#!/bin/bash
#
# Script de compilação automatica do GCC,
# baixa e instala todas as dependencias e compiladores automaticamente  
#
# GPL-3.0
#
##################################################################################

###########################################
### escolha aqui a versão do GCC a ser compilada ##################
vs=4.6.3
###################

gmpvs=4.3.2
mpfrvs=2.4.2
mpcvs=0.8.1

###################

sudo mkdir /home/gcc-$vs

cd /home/gcc-$vs

#
###########
wget -c http://gcc-uk.internet.bs/infrastructure/gmp-$gmpvs.tar.bz2
tar -jxpvf gmp-$gmpvs.tar.bz2
cd /home/gcc-$vs/gmp-$gmpvs
sudo ./configure
sudo make -j2
sudo make -j2 install
#
cd /home/gcc-$vs

#
wget -c http://gcc-uk.internet.bs/infrastructure/mpfr-$mpfrvs.tar.bz2
tar -jxpvf mpfr-$mpfrvs.tar.bz2 
cd /home/gcc-$vs/mpfr-$mpfrvs
sudo ./configure
sudo make -j2
sudo make -j2 install 
#
cd /home/gcc-$vs

wget -c http://gcc-uk.internet.bs/infrastructure/mpc-$mpcvs.tar.gz
tar -zxpvf mpc-$mpcvs.tar.gz
cd /home/gcc-$vs/mpc-$mpcvs
sudo ./configure
sudo make -j2
sudo make -j2 install
#

###########

cd /home/gcc-$vs
#


wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-ada-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-core-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-fortran-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-g++-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-go-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-java-$vs.tar.bz2
wget -c http://gcc.petsads.us/releases/gcc-$vs/gcc-objc-$vs.tar.bz2

tar -jxpvf gcc-$vs.tar.bz2
tar -jxpvf gcc-ada-$vs.tar.bz2
tar -jxpvf gcc-core-$vs.tar.bz2
tar -jxpvf gcc-fortran-$vs.tar.bz2
tar -jxpvf gcc-g++-$vs.tar.bz2
tar -jxpvf gcc-go-$vs.tar.bz2
tar -jxpvf gcc-java-$vs.tar.bz2
tar -jxpvf gcc-objc-$vs.tar.bz2

sudo apt-get build-dep gcc-4.4 g++-4.4 gcj-4.4 -y
sudo apt-get install gmpc mpc fixincludes -y



#
cd /home/gcc-$vs/gcc-$vs
#

#
sudo CHOST="i486-pc-linux-gnu"
sudo export CHOST

sudo ./configure --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --enable-clocale=gnu --enable-plugin --enable-objc-gc --disable-werror  --with-gmp-include=/home/gcc-$vs/gmp-$gmpvs/gmp --with-gmp-lib=/home/gcc-$vs/gmp-$gmpvs/.libs --with-mpfr-include=/home/gcc-$vs/mpfr-$mpfrvs/mpfr --with-mpfr-lib=/home/gcc-$vs/mpfr-$mpfrvs/.libs


sudo make -j2 
sudo make -j2 install

echo 'processo terminado com exito'

Scripts recomendados

Tags de Cores e formatação no Terminal

Dia Anterior

Multiconversor (Octal para binário, decimal para hexadecimal, etc)

space2sep (Trocar arquivos com espaço "\ ")

Troca de imagem da tela de bloqueio de usuário no Linux Mint MATE


  

Comentários
[1] Comentário enviado por asdf2 em 25/07/2012 - 19:38h

uma correção aqui:

o script foi feito para sistemas 32 bits

para usar em SO 64 bits, modifique essa linha aqui:

sudo CHOST="i486-pc-linux-gnu"

para isso:

sudo CHOST="x86_64-pc-linux-gnu"

...valeu

[2] Comentário enviado por jarlisson em 25/07/2012 - 22:48h

Uma sugestão: comentar mais
Nem todo mundo usa pra instalar o gcc, algumas pessoas (como eu) usam pra estudar o script alheio :D

abraço! valeu!

[3] Comentário enviado por asdf2 em 26/07/2012 - 10:34h


[2] Comentário enviado por jarlisson em 25/07/2012 - 22:48h:

Uma sugestão: comentar mais
Nem todo mundo usa pra instalar o gcc, algumas pessoas (como eu) usam pra estudar o script alheio :D

abraço! valeu!


@jarlisson,

de certa forma você está correto, a proxima versão irei comentar mais,

mas esse aé está muito simples, basicamente é só execução de comando mesmo, basta só seguir linha por linha que vai entender tudo,

vou ver se comento mais na proxima versão (4.7.2), se quiser melhora-lo fique a vontade pois foi feito por todos nós mesmo (GPL-3).

valeu


[4] Comentário enviado por removido em 26/07/2012 - 12:29h

Prá uma próxima sugestão sugiro criar um jeito de se criar opções de escolha do que se fazer para compilar o conjunto, como por exemplo, creio não ser necessário baixar todos os pacotes, senão não estariam divididos. Então escolhe-se o que compilar, por exemplo.

Depois escolher como compilar, como o caso de 32/64 bits, detectar e o sisteema é de 32 ou 64, opção de compilação cruzada, uso do mpc, mpfr etc.

n-coisas.

[5] Comentário enviado por asdf2 em 26/07/2012 - 12:55h


[4] Comentário enviado por Listeiro 037 em 26/07/2012 - 12:29h:

Prá uma próxima sugestão sugiro criar um jeito de se criar opções de escolha do que se fazer para compilar o conjunto, como por exemplo, creio não ser necessário baixar todos os pacotes, senão não estariam divididos. Então escolhe-se o que compilar, por exemplo.

Depois escolher como compilar, como o caso de 32/64 bits, detectar e o sisteema é de 32 ou 64, opção de compilação cruzada, uso do mpc, mpfr etc.

n-coisas.


@Listeiro,

se eu fizer desse jeito, teria que encher de IF e ELSE que deixa o script mais inteligente sim, mas a correção de bugs seria mais complicada,

acredito que quanto mais simples o codigo, mais facil será a correção de bugs,

uma coisa que eu preciso fazer, é capiturar a arquitetura do SISTEMA OPERACIONAL automaticamente, só isso já basta,

você sabe como se faz isso ?


não manjo muito de bash não, eu só enrrolo um bocado...kkkkkkkk

valeu

[6] Comentário enviado por removido em 26/07/2012 - 15:52h

Tem o comando uname , mas preciso ter certeza se não é so uma string e se é verificação mesmo.

Não é necessário usar if/else. Tem as instruções case/esac que deixam visualmente mais agradável e fácil de se compreender.

Alguma coisa como

case numero in

0)
echo zero
;;

1)
echo um
;;

...


19)
echo dezenove

*)
echo algum numero

esac

Lembra o switch da linguagem C, sendo que pode ser usado com strings.

Esse * do final é o caso padrão usado quando não se encontra um correspondente a um dos padrões.

O ;; em par é obrigatório. Marca o limite daquela opção.

Faltaria o meio de se escolher as opções de compilação, pode ser com menu usando comando read e opções numeradas, vetores e loop prá não usar 30 comandos echo/read ou usar uma interface tipo algum similar ao dialog, que use ncurses.




[7] Comentário enviado por asdf2 em 26/07/2012 - 16:27h


[6] Comentário enviado por Listeiro 037 em 26/07/2012 - 15:52h:

Tem o comando uname , mas preciso ter certeza se não é so uma string e se é verificação mesmo.

Não é necessário usar if/else. Tem as instruções case/esac que deixam visualmente mais agradável e fácil de se compreender.

Alguma coisa como

case numero in

0)
echo zero
;;

1)
echo um
;;

...


19)
echo dezenove

*)
echo algum numero

esac

Lembra o switch da linguagem C, sendo que pode ser usado com strings.

Esse * do final é o caso padrão usado quando não se encontra um correspondente a um dos padrões.

O ;; em par é obrigatório. Marca o limite daquela opção.

Faltaria o meio de se escolher as opções de compilação, pode ser com menu usando comando read e opções numeradas, vetores e loop prá não usar 30 comandos echo/read ou usar uma interface tipo algum similar ao dialog, que use ncurses.





pode deixar, vou dar uma estudada nisso aé, e ver se consigo fazer alguma coisa melhor

valeu


[8] Comentário enviado por removido em 26/07/2012 - 18:10h

É, eu sei, todo mundo enrola! :D

Mas se você está preparando compilação de GCC e kernel é porque pensa em algo mais além...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts