2017-11-03 9 views
1

最近、プログラミングとコンパイルの仕組みに関する絶対的なスタックを学んできましたが、これはちょっとです私の深さの。現在、私はpyigrf12をインストールしようとしていますので、PythonでIGRFを使用する方法があります(私は自分の仕事のほとんどを行っています)。私の最初の問題は、このモデルがFortranで開発されたため、適切なコンパイラを見つけることでした。 MinGWを使ってg77とgfortranの両方をインストールしました。FortranでのPythonモジュール:LNK1112 `モジュールマシンタイプ 'X86'は、ターゲットマシンタイプ 'x64'と衝突します。

各コンパイラは私に異なるエラーを与えます。 setup.pyがg77を使用するようにデフォルト設定されていると、処理中に "Invalid form for assignment ..."エラーが原因で「exit status 1で失敗しました」というエラーが表示されます。だから、setup.pyがgfortran.exeを使用するようにg77.exeバイナリの名前を変更しました(どのコンパイラを使うかはわかりませんが、これはすべてのコマンドラインです)。

このコンパイラはプロセスをさらに終了しましたが、最終的には "failed with exit status 1112"で終了しました。出力を見ると、コンパイラは "致命的なエラーLNK1112:ターゲットマシンタイプ 'x64'と競合するモジュールマシンタイプ 'X86'を見つけたようです。"このエラーを調べると、私はこの問題を参照していくつかのフォーラムに出くわしました。 proposed solution in each caseは私がVisual Studio環境を使用していると思われ、「/ MACHINE:IX86」フラグを変更するためにクリックすることができます。

これは簡単だと思われますが、これはコマンドラインで実行できますか?もしそうなら、どうですか?現在、私がsetup.pyスクリプトを実行するために行うのは、コマンドプロンプト(Windowsマシン上にあります)に

python setup.py develop 

です。どんな助けでも大歓迎です!

編集:私が書いたものの全出力は以下の通りです。私は何も変更していないことに注意してください。これまで私がコントロールしてきた唯一のものはコンパイラです。それ以外のものはすべてpyigrfの一部です。このモジュールをコンパイルする際に問題があるように見えるのは間違いありませんが、周りに何か問題がないかどうか疑問に思っていました。それはある種の旗のように思えるので...私は確信していません。正直なところ、ある種の奇跡を望んでいる。ここにあります:

running develop 
running build_scripts 
running egg_info 
running build_src 
build_src 
building extension "igrf12" sources 
f2py options: ['--quiet'] 
    adding 'build\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.c' to sources. 
    adding 'build\src.win-amd64-2.7\build\src.win-amd64-2.7' to include_dirs. 
build_src: building npy-pkg config files 
writing requirements to pyigrf12.egg-info\requires.txt 
writing pyigrf12.egg-info\PKG-INFO 
writing top-level names to pyigrf12.egg-info\top_level.txt 
writing dependency_links to pyigrf12.egg-info\dependency_links.txt 
reading manifest file 'pyigrf12.egg-info\SOURCES.txt' 
writing manifest file 'pyigrf12.egg-info\SOURCES.txt' 
running build_ext 
customize MSVCCompiler 
customize MSVCCompiler using build_ext 
customize GnuFCompiler 
Could not locate executable g77 
Could not locate executable f77 
customize IntelVisualFCompiler 
Could not locate executable ifort 
Could not locate executable ifl 
customize AbsoftFCompiler 
Could not locate executable f90 
customize CompaqVisualFCompiler 
Could not locate executable DF 
customize IntelItaniumVisualFCompiler 
Could not locate executable efl 
customize Gnu95FCompiler 
Found executable D:\MinGW\bin\gfortran.exe 
customize Gnu95FCompiler 
customize Gnu95FCompiler using build_ext 
building 'igrf12' extension 
compiling C sources 
C:\Users\XXXXX\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ibuild\src.win-amd64-2.7\build\src.win-amd64-2.7 -IC:\ProgramData\Anaconda2\lib\site-packages\numpy\core\include -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC /Tcbuild\src.win-amd64-2.7\igrf12module.c /Fobuild\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12module.obj 
C:\Users\XXXXX\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ibuild\src.win-amd64-2.7\build\src.win-amd64-2.7 -IC:\ProgramData\Anaconda2\lib\site-packages\numpy\core\include -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC /Tcbuild\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.c /Fobuild\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.obj 
compiling Fortran sources 
Fortran f77 compiler: D:\MinGW\bin\gfortran.exe -Wall -g -ffixed-form -fno-second-underscore -O0 
Fortran f90 compiler: D:\MinGW\bin\gfortran.exe -Wall -g -fno-second-underscore -O0 
Fortran fix compiler: D:\MinGW\bin\gfortran.exe -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -O0 
compile options: '-Ibuild\src.win-amd64-2.7\build\src.win-amd64-2.7 -IC:\ProgramData\Anaconda2\lib\site-packages\numpy\core\include -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -IC:\ProgramData\Anaconda2\include -IC:\ProgramData\Anaconda2\PC -c' 
gfortran.exe:f77: fortran/igrf12.f 
C:\Users\XXXXX\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:d:\mingw\lib\gcc\mingw32\6.3.0 /LIBPATH:d:\mingw\lib /LIBPATH:C:\ProgramData\Anaconda2\libs /LIBPATH:C:\ProgramData\Anaconda2\PCbuild\amd64 /LIBPATH:C:\ProgramData\Anaconda2\PC\VS9.0\amd64 /LIBPATH:C:\ProgramData\Anaconda2\libs /LIBPATH:C:\ProgramData\Anaconda2\PCbuild\amd64 /LIBPATH:C:\ProgramData\Anaconda2\PC\VS9.0\amd64 /EXPORT:initigrf12 build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12module.obj build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\build\src.win-amd64-2.7\fortranobject.obj build\temp.win-amd64-2.7\Release\fortran\igrf12.o /OUT:igrf12.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\build\src.win-amd64-2.7\igrf12.pyd.manifest 
build\temp.win-amd64-2.7\Release\fortran\igrf12.o : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' 
+0

g77を忘れました。プロセスを妨げないことを確認してください。 **完全に廃止されました。エラーメッセージからは、そのコードには不十分であることは明らかです。 –

+0

コードの一部の1つは32ビットでコンパイルされ、もう1つの部分は64ビットでコンパイルされます。あなたは両方を一つにする必要があります。大規模なデータセットを扱う場合は、64ビットを推奨します。選択したビット数だけでなく、より多くの出力を見ることが有益です。フラグは異なっていることに注意してください.gfortranはVisual C++フラグを受け入れません。 –

+0

出力全体を含むように編集されました。 – Yoshi

答えて

1

ログから、gfortranの32ビット版をインストールしたように見えます。残りのツールチェーンと互換性を持たせるには、64ビットバージョンが必要です。

必ず実行してください:gfortran -vとバージョン情報を確認してください。

+0

「スレッドモデル:win32」と書かれているので、32ビット版だと思いますか?どこでgfortranの64ビット版を見つけることができますか? – Yoshi

+0

他のすべてのバージョンと同じ場所https://gcc.gnu.org/wiki/GFortranBinaries#Windows –

+0

いいえ、64ビットバージョンには「スレッドモデル:win32」と表示されます。 gfortran -vは32ビットシステムi686と64ビットシステムx86_64を呼び出します。理想的な世界では、情報はCOMPILER_OPTIONS()文字列にありますが、gfortranにはありません。この一行プログラムは、f2003コンパイラのビット数を出力します。ISO_C_BINDINGを使用してください。 '(*(g0))'、bit_size(0_C_INTPTR_T)、 'bits'; end – user5713492

関連する問題