GCC – O compilador lendário celebra 25 anos

20 Comentários

Equipa disponibilizou o GCC 4.7.0 como forma de comemoração

O GNU Compiler Collection (usualmente designado apenas como GCC) é um conjunto de compiladores para as mais diversas linguagens de programação . Apesar de ter sido originalmente desenvolvido para a linguagem de programação C, o GCC suporta actualmente C++, Fortran, Ada, Java, Objective-C, Go, entre outras e é distribuído pela Free Software Foundation com a licença GNU GPL. O compilador GCC foi  escrito em 1987 por Richard Stallman (derivado do compilador Pastel) para servir de suporte ao projecto GNU.

Para celebrar os 25 anos do projecto, a equipa responsável pelo mesmo anunciou aqui disponibilizou a versão 4.7.0 do GCC. Vamos conhecer as novidades.

gcc_00

Disponibilizado no dia 22 de Março, o  GCC 4.7.0 foi disponibilizado  como forma de comemoração dos 25 anos desde completo compilador.

Principais novidade dos GCC 4.7.0

  • Suporte para novas extensões GNU para o formato de depuração de informação DWARF
  • Melhorias ao´nível da estabilidade e estabilidade do Framework link-time optimization (LTO)
  • Suporte melhorado para o padrão ISO C++11 no compilador de C e C++
  • Suporte para a versão 3.1 da API OpenMP para C, C++ e Fortran

Todas as novidades e melhorias podem ser consultadas aqui

Actualização no MacOS

A Apple deixou de distribuir o GCC e e passou a adoptar como compilador padrão o Clang mais o llvm-gcc. Para quem pretender extrair, compilar  e instalar as bibliotecas necessárias e o próprio GCC, basta executar o script disponibilizado por Dann Luciano.

#! /bin/bash
PREFIX=/usr/local/gcc
BUILD_FOLDER=gcc_build

if [ $UID -ne 0 ] ; then
echo "Root Please"
exit 1
fi

mkdir -p $BUILD_FOLDER

cd $BUILD_FOLDER

echo "Download need files"

wget ftp://ftp.gmplib.org/pub/gmp-5.0.4/gmp-5.0.4.tar.bz2 -c
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.0.tar.bz2 -c
wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz -c
wget ftp://gcc.gnu.org/pub/gcc/snapshots/4.7.0-RC-20120302/gcc-4.7.0-RC-20120302.tar.bz2 -c

echo "Compiling gmp"

tar xfz gmp-5.0.4.tar.bz2
cd gmp*
mkdir build
cd build

../configure --prefix=$PREFIX
make
make check
make install

cd ../../

echo "Compiling mpfr"

tar xfz mpfr-3.1.0.tar.bz2
cd mpfr*
mkdir build
cd build

../configure --prefix=$PREFIX --with-gmp=$PREFIX
make
make install

cd ../../

echo "Compiling mpc"

tar xfz mpc-0.9.tar.gz

cd mpc*
mkdir build
cd build
../configure --prefix=$PREFIX --with-gmp=$PREFIX --with-mpfr=$PREFIX
make
make install

cd ../../

echo "Compiling GCC"

tar xfz gcc-4.7.0-RC-20120302.tar.bz2

cd gcc*
mkdir build
cd build
../configure --prefix=$PREFIX --enable-checking=release --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --program-suffix=-4.7
make -j 2
make install

echo "GCC Build Complete in " $PREFIX

cd ../../../

read -p "Erase your build directories (y/n)?"
[ "$REPLY" == "y" ] || rm -rf $BUILD_FOLDER

Para outros sistemas operativos, podem descarregar o GCC 4.7.0 via servidor FTP do projecto aqui

Alguma vez usou o GCC para desenvolvimento de algum projecto?

Partilhar:
Tags:

Comentários

20

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de André
    André

    Para ser totalmente correcto:
    GCC – A compilação (ou colecção) de compiladores lendários celebra 25 anos

    E que 25 anos… O melhor de todos, no que conta a optimizações 🙂
    É pena ainda não suportar a 100% o C++11, mas está muito perto de o fazer.

    Congratulations GCC!

    1. Avatar de NS
      NS

      É bastante bom, mas está longe do ser o melhor.
      Um bom exemplo é o compilador da intel, que em muitas situações em 10 vezes mais rápido (por exemplo fazendo uma decomposição LU com as MKL).

      1. Avatar de @lmx
        @lmx

        Não esta correcta a tua avaliação…!!

        O compilador da Intel refere-se apenas a uma arquitectura, e não a todas as que o gcc suporta….

        Fazendo a mesma analogia que fizes-te,
        posso te dizer que o gcc é milhões de vezes mais rápido que o da Intel para a arquitectura AVR,ou MIPS ou ARM, entre muitas outras?!
        que tens a dizer da minha afirmação?

        cmps

        1. Avatar de NS
          NS

          O que estava em causa era a qualidade do compilador. O compilador intel é ordens de magnitude superior.
          Quanto à arquitectura, isso é uma pura mentira. Embora não para isso que foi construido, um compilador intel um ARM faz a mesma figura que outros compiladores.
          Quanto ao custo… tudo depende da utilidade. Para muitas coisas uso o gcc que dá muito bem. Quando corro calculos num cluster é impensavel usar o GCC. Operações com matrizes usando Blas ou Lapack chegam a ser 10 a 20 vezes mais rápidas. Isto é falar de 1 semana ou 10 semanas. 😉
          Claro que o uso das flags adequadas ajuda, mas não faz milagres. Para além disso, o ic é totalmente vectorizado, enquanto que o gcc está a anos luz de isso acontecer.
          Conclusão: O compilador intel com as MKL afinadinhas vale os milhares de euros que custa.

          1. Avatar de @lmx
            @lmx

            Boas..
            eu não disse que para essa arquitectura é mau!É evidente que terá que ser o melhor, agora para as outras não acredito nem de longe que seja melhor que o gcc!!
            A comparação que fizes-te parece-me errada, pois estás a comparar algo que é feito apenas para uma arquitectura com algo que existe para imensas arquitecturas, e essa comparação é errada, é nesse sentido que o meu comentário vai.

            cmps

      2. Avatar de Mi
        Mi

        Sem contar que o compilador Intel não produz resultados _correctos_, e compila deliberadamente opcodes lentos para plataformas não-Intel.

        1. Avatar de @lmx
          @lmx

          com certeza que sim, daí não poder ser feita a comparação que o colega NS fez acima.

          cmps

      3. Avatar de Carlos
        Carlos

        @lmx, mi:

        Eu estou chocado! chocado!!! que o compilador da Intel esteja otimizado para processadores Intel.

        Só falta virem dizer que o compilador da IBM está otimizado para processadores da IBM, que o da AMD está otimizado para processadores AMD e que o da ARM está otimizado para processadores ARM…

        1. Avatar de @lmx
          @lmx

          Boas…
          lol,
          de facto não percebo o porquê de as pessoas trazerem sempre algo que é muito especifico e que está patenteado, para um mundo onde existe algo grandioso, e que cobre a maioria das arquitecturas existentes, tendo um desempenho fantástico, para a situação em que é proposto, software livre(não podendo de forma alguma conter código patenteado pelas respectivas marcas de processadores, e outros).
          Mesmo assim e sem introduzir optimizações na altura de compilar, tem uma performance muito boa, e não apenas para c/c++, mas sim para todas as outras linguagens que suporta.

          É evidente que este compilador(que na pratica não é bem um compilador, pois um compilador tem um preprocessador de texto(macros),compilador, assembler e linker…(o que não é o caso!!!))não pode ter a mesma performance que um criado pela própria marca e que se encontra patenteado…

          O GCC usa o Pacote binUtils para fazer assembler e linker.

          É estranho quando alguém diz que está longe de ser o melhor e depois compara-o com um compilador de uma única arquitectura patenteada :S .

          quando na Prática o GCC é muito mais do que um compilador, obviamente em conjunto com binutils.

          cmps

          cmps

          1. Avatar de @lmx
            @lmx

            assim de cabeça…
            o compilador gcc contem mais de 450 megas de CODIGO FONTE, mais uns quantos do pacote binutils e mais uns quantos da GLIBC.
            É um montro(funciona para varias linguagens e arquitecturas) …mas é um monstro bonito 😉

            cmps

          2. Avatar de Carlos
            Carlos

            Qual é a única arquitetura patenteada?

            A da IBM, a da ARM ou a da Intel?

            É verdade que toda a gente fabrica processadores ARM (principalmente a Samsung) mas isso não quer dizer que não haja patentes às paletes. Para além do processador base cujo design é propriedade da ARM, o processador ARM dependendo de quem o fabrica usa patentes da Samsung, da Apple, da Qualcommm, da PowerVR, e mais uma carrada delas, incluindo da Intel ou não tivesse sido a intel a criar o primeiro microprocessador comercial, e o célebre sr. Moore (o da Lei de Moore) um dos seus fundadores.

          3. Avatar de @lmx
            @lmx

            São todas como é evidente, e expectável que um compilador não possa usar código patenteado?Penso que isso é óbvio!
            Não faz sentido dizer que o compilador da intel é melhor em algumas coisas, porque este foi criado primeiro e tem codigo patenteado…que não pode ser usado noutros compiladores…
            O problema da evolução é mesmo a treta das patentes, se assim não fosse o gcc daria-lhe um baile na arquitectura x86, porque não outras da-lhe um bailinho lol.

            cmps

  2. Avatar de vasco

    Estou a dar os 1º passos na programação usando o C. O único que compilador que utilizei até agora foi o gcc.

  3. Avatar de Eduardo
    Eduardo

    No caso da Apple o compilador padrão é o LLVM e não Clang. O Clang é um dos front-end possíveis, havendo em alternativa o front-end do GCC – daí LLVM-GCC. Em ambos os casos considera-se que o compilador é o LLVM.

  4. Avatar de Ana Narciso

    Parabéns ao GCC!

    O Richard Stallman (criador do GCC) veio a Lisboa à Semana Informática do IST, a qual coordenei e tive o prazer de fazer de “babysitter” dele. Nem sabia que já eram 25 anos, bolas!

    1. Avatar de @lmx
      @lmx

      Boas…

      Sortuda 😉 !
      Eu ainda não tive o prazer de o conhecer 🙁 .

      cmps

      1. Avatar de Carlos
        Carlos

        Prazer?

        O homem é um fanático fundamentalista do opensource, é o género de pessoa que faz as outras pessoas pensarem que há algo errado com o opensource.

        1. Avatar de Ana Narciso

          OPEN SOURCE??????
          Já eras excomungado por ele!

          SOFTWARE LIVRE, FREE SOFTWARE.

          A sério, não imaginas o stress que foi para meter na cabeça dos jornalistas esta diferença, porque ele passa-se quando as pessoas confundem os termos.

          Mais info: http://www.gnu.org/philosophy/free-software-for-freedom.html

        2. Avatar de @lmx
          @lmx

          Boas…
          existem de facto diferenças entre opensource e software livre…

          Mas de uma forma geral partilho muitos dos valores deste SENHOR, e dou graças a deus ele ter existido, pois hoje temos escolha.

          Escolha essa que inclusive permite aos mais necessitados poderem ter acesso ao ensino (informático e não só), que eu considero um valor fundamental de uma sociedade supostamente humana, sendo que a informática abre as portas a muito conhecimento, inclusive externo a esta ciência, como por exemplo o uso da Internet.

          Este SENHOR conhecido como o ultimo dos Grandes GURUS gerados pelo MIT, tem sido um
          impulsionador do software livre a todos os níveis, não podia deixar de estar de acordo com estes valores humanos, que também eu tenho orgulho em possuir, mas que não me permitem dada a minha insignificância, comparativamente a este SENHOR, produzir tamanho feito.
          É de louvar que existam ainda neste mundo, feito de pseudo seres-humanos, pessoas como ele.

          O fanatismo é relativo, depende sempre do ponto de vista de cada um.
          Para a Microsoft, ele é visto como um vírus, já para mim…eu é que vejo a Microsoft como um vírus lol, e a ele vejo-o como um ser humano Verdadeiramente difícil de igualar, assim como muitos outros que teem ficado na historia, pela positiva como é óbvio.
          Tudo na vida tem sempre varias interpretações e possíveis soluções, depende de que lado estamos colocados…

          cmps

    2. Avatar de hippie
      hippie

      Olá,

      @ Ana Narciso

      já que foste a ama dele, LOL, sabes onde posso encontrar o video da palestra do teu protegido.

      Obrigado.

      \o/