|
藍森林 http://www.lslnet.com 2006年6月26日 11:18
請教代碼的split
有一個fortran 90的庫函數代碼,好多函數寫在一個文件裡面。它提供了一個編譯方法:
可以看出來首先它是把這個文件分開成每個函數一個文件,然後編譯,再生成庫文件。
我現在用的是intel fortran編譯器,不知道調用哪個相當於f90split這個命令的選項。
如果我直接編譯這個大文件,生成庫文件,最後和別的程序連接的時候,會報錯很多
函數有多重定義(在後面的程序裡面確實有很多函數和庫文件裡面的函數名重名).
所以現在一種方法就是把這個庫函數文件手動分開成單個函數的小文件。我想到了
awk或者sed,但是又不熟悉。哪位可以幫我寫一行命令嗎。這個庫函數文件裡面每個
函數都是以subrountine開始, 最後以end結束。
#!/bin/csh
#
echo "Split the file."
#
mkdir temp
cd temp
rm *
f90split ../mylib.f90
#
echo "Compile the routines."
#
foreach FILE (`ls -1 *.f90`)
f90 -c -g $FILE >& compiler.out
if ( $status != 0 ) then
echo "Errors while compiling " $FILE
exit
endif
rm compiler.out
end
rm *.f90
#
echo "Create the archive."
ar qc libmylib.a *.o
rm *.o
#
echo "Store the archive."
.... |
[code]
csplit -z filename '/subrountine/' {*}[/code]
生成以xx開頭的文件若干 |
| |