Script de compilação automatica do GCC

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

[ Hits: 4.879 ]

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

Procura Arquivos

Nautilus-script: Edite com o Gimp

Manipular serviços no Runit (Void Linux)

Browser - use rofi para acessar páginas na web

Rastreando suas encomendas dos Correios


  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts