2015-06-09 62 views
-1

我想使用的功能OPAC從這個源代碼: http://opalopacity.llnl.gov/codes/xztrin21.f需要得到f2py工作,但不知道任何FORTRAN

我不uderstand代碼非常好,我只是想用它作爲Python模塊。我運行以下命令:

f2py -c xztrin21.f -m opal_opacity 

,但我總是得到這樣的錯誤:

/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c:1819:71: error: expected ‘;’, ‘,’ or ‘)’ before ‘!’ token 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c: In function ‘f2py_init_cst’: 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c:1828:35: error: ‘f2py_setup_cst’ undeclared (first use in this function) 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c:1828:35: note: each undeclared identifier is reported only once for each function it appears in 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c:1819:71: error: expected ‘;’, ‘,’ or ‘)’ before ‘!’ token 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c: In function ‘f2py_init_cst’: 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c:1828:35: error: ‘f2py_setup_cst’ undeclared (first use in this function) 
/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c:1828:35: note: each undeclared identifier is reported only once for each function it appears in 
error: Command "gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/tmp/tmpWe2VM7/src.linux-x86_64-2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c /tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.c -o /tmp/tmpWe2VM7/tmp/tmpWe2VM7/src.linux-x86_64-2.7/opal_opacitymodule.o" failed with exit status 1 

我不認爲有真的什麼錯誤的代碼。我相信其他人能夠正常工作,所以我想我必須有一個錯誤的Fortran編譯器或其他東西。我不知道該怎麼做。

任何幫助apprecitated

編輯: 如果我嘗試編譯gfortran代碼我得到如下:

xztrin21.f:1025.72: 

     IF (H.EQ.0.) PAUSE 'Bad XA input.'         
                     1 
Warning: Deleted feature: PAUSE statement at (1) 
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: ld returned 1 exit status 

回答

1

好了,所以這看起來並不像你鏈接的Fortran代碼有問題。

您的實際誤差均發現In function ‘f2py_init_cst’

  • :1828:35: error: ‘f2py_setup_cst’ undeclared (first use in this function)
  • :1819:71: error: expected ‘;’, ‘,’ or ‘)’ before ‘!’ token

由名字來看,這表明與Python包f2py的問題。 上述語法意味着編譯器在f2py代碼中找到line: 1828, column:35line:1819, column:71上的錯誤。

  • 我建議你檢查的文件上f2py網站,並確保您正確
  • 編譯它作爲一個試驗,在f2py文檔顯示work through the examples,並確保你可以編譯它們
+0

我跑了第一個例子沒有任何麻煩。編譯器可能會遇到問題。請參閱我的編輯 – Tom83B

+0

或者是否需要在代碼中的某個地方使用main()函數? – Tom83B

+0

我不認爲你的編譯器有問題,它一定是你調用它的方式。只需在'f2py'上仔細閱讀文檔即可。此外,你遇到的第二個問題是因爲你正在編譯一個沒有'PROGRAM'的'SUBROUTINE'。它正在尋找一個'PROGRAM'和'END PROGRAM',但我猜你沒有一個。所以它沒有找到'main',因爲你沒有編譯程序!參見[這裏](http://www.see.ed.ac.uk/~jwp/pse2/modelling/fortran/simple.html)如何編寫一個簡單的'Fortran'程序,它應該找到'main'辦法。 –

0
f2py -c --fcompiler=gnu95 -m modulename filename.f95 

這個命令應該工作。

http://www.ucs.cam.ac.uk/docs/course-notes/unixcourses/pythonfortran/files/f2py.pdf

這是一個非常簡單的文件,解決了如何在Python中使用的Fortran模塊。這對我很有幫助。

+0

也在使用f2py之前。你需要確保你已經正確定義了變量的「意圖」。無論其意圖(中)還是意圖(外)。如果在默認情況下Fortran代碼中沒有這樣做。你可以使用 「!f2py intent(in)var_name」這將被視爲fortran代碼中的註釋,但會被f2py提取。 –

相關問題