Compilando fontes em separado no FORTRAN. – www.mattos.eng.br
Compilando fontes em separado no FORTRAN.
By Leonardo Marques 10/01/2010 10/01/2010 Uncategorized
Para compilar um programa que está modularizado em diversos fontes, compilando cada fonte de cada vez, é muito simples e muito útil, haja visto que você não precisará recompilar todos os módulos a todo o tempo, e sim somente o módulo alterado e os dependentes do módulo alterado.
Vou dar o exemplo utilizando 3 arquivos fontes, o aleatorio.f90, rotinas3.3.f90 e teste.f90. E utilizando o compilador ifort, o qual é distribuído gratuitamente pela Intel para uso não comercial, não estou querendo fazer propaganda da Intel, mas os compiladores dela, na minha humilde opnião, humilham os compiladores da GNU, mas isso é uma discussão a parte.
A interdependêcia está assim: teste.f90 depende de aleatorio.f90, o qual depende do rotinas3.3.f90.
Primeiro compilamos os dois primeiros como objeto, utilizando a opção -c do ifort:
$ ifort -c rotinas3.3.f90
rotinas3.3.f90(56): (col. 9) remark: LOOP WAS VECTORIZED.
rotinas3.3.f90(61): (col. 9) remark: PERMUTED LOOP WAS VECTORIZED.
$ ifort -c aleatorio.f90
aleatorio.f90(59): (col. 16) remark: LOOP WAS VECTORIZED.
Confira os objetos criados:
aleatorio.o rotinas3.3.o
Então compilamos o último programa para gerar o binário:
$ ifort teste.f90 rotinas3.3.o aleatorio.o -o teste.bin
E pronto, o último programa foi compilado, sem recompilar todos os outros módulos, usando um -v você conseguira ver que o ifort não recompila os objetos.
Isso tras uma vantagem imensa para projetos de muitos módulos, pois não há necessidade de recompilar tudo toda hora, por exemplo, se eu fizer um alteração em aletorio.f90, eu só preciso recompilar este módulo e o que depende dele, o arquivo teste.f90, evitando a recompilação desnecessária do arquivo rotinas3.3.f90.
códigodocumentaçõesfortrangfortranifortlinuxprogramação
Script para atualização automática do WordPress via shell.
2 thoughts on "Compilando fontes em separado no FORTRAN."
11/01/2010 at 08:50
Vale ressaltar que o Fortran 90 também possui a cláusula INCLUDE, para quando deseja-se simplesmente reutilizar um módulo (em nova compilação)
Você pode definir seu módulo no arquivo 'modulo.f90' e usá-lo no programa principal 'programa.f90'.
11/01/2010 at 09:11
Eu tenho usado da seguinte forma, defino os módulos em arquivos separados utilizando o MODULE, depois eu chamo as subrotinas necessárias utilizando a cláusula USE subrotina, depois é só compilar tudo junto com os objetos, como demonstrado no exemplo do post.