Re: [f2py] Compiling/linking the Fortran source files manually
Pearu Peterson <[email protected]> Tue, 26 Apr 2011 10:12:24 +0300
| Newsgroups | gmane.comp.python.f2py.user |
|---|---|
| Message-ID | <[email protected]> |
On 04/26/2011 09:51 AM, Ben Forbes wrote: > It finds the intelv compiler, but as before, it's not using > appropriate compiler and linker flags. It's also finding the 32-bit > compiler, which I think will be a problem when linking in with the > 64-bit python27.lib. Do you have 64-bit intel compiler in your system? If so, then the question is why the --help-fcompiler could not detect it. Look at the numpy/distutils/fcompiler/intel.py script in you Python installation tree and try to find out why --fcompiler=intelem is not detected. First, check the version_match text and compare with the version string that the compiler emits. HTH, Pearu > > > On Tue, Apr 26, 2011 at 4:47 PM, Pearu Peterson > <[email protected]> wrote: >> Ok, thanks for the info. >> >> So, the command that I would try is >> >> f2py -c -m foo helloworld.f90 --compiler=mingw32 --fcompiler=intelv >> >> HTH, >> Pearu >> >> On 04/26/2011 09:39 AM, Ben Forbes wrote: >>> IntelVisualFCompiler instance properties: >>> archiver = ['C:\\Program Files >>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>> '/verbose', '/OUT:'] >>> compile_switch = '/c ' >>> compiler_f77 = ['C:\\Program Files >>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>> '-FI', '-w90', '-w95', '/F6000000', '/fpe:3', '/Qopenmp', >>> '/w', '/I:C:\\Program Files >>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>> '/nologo', '/O3', '/Qip', '/QaxM'] >>> compiler_f90 = ['C:\\Program Files >>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>> '-FR', '/F6000000', '/fpe:3', '/Qopenmp', '/w', >>> '/I:C:\\Program Files >>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>> '/nologo', '/F6000000', '/fpe:3', '/Qopenmp', '/w', >>> '/I:C:\\Program Files >>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>> '/nologo', '/O3', '/Qip', '/QaxM'] >>> compiler_fix = ['C:\\Program Files >>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>> '-FI', '-4L72', '-w', '/F6000000', '/fpe:3', '/Qopenmp', >>> '/w', '/I:C:\\Program Files >>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>> '/nologo', '/F6000000', '/fpe:3', '/Qopenmp', '/w', >>> '/I:C:\\Program Files >>> (x86)\\VNI\\imsl\\fnl600\\Intel64\\include\\dll', >>> '/nologo', '/O3', '/Qip', '/QaxM'] >>> libraries = [] >>> library_dirs = [] >>> linker_exe = None >>> linker_so = ['C:\\Program Files >>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>> '-shared', '-shared'] >>> object_switch = '/Fo' >>> ranlib = None >>> version = LooseVersion ('11.1') >>> version_cmd = ['C:\\Program Files >>> (x86)\\Intel\\Compiler\\11.1\\067\\bin\\ia32\\ifort.exe', >>> '/FI', '/c', >>> 'c:\\users\\bdforbes\\appdata\\local\\temp\\tmpanswqs\\ra9 >>> py5.f', '/o', >>> 'c:\\users\\bdforbes\\appdata\\local\\temp\\tmpanswqs\\ra9 >>> py5.o'] >>> Fortran compilers found: >>> --fcompiler=intelv Intel Visual Fortran Compiler for 32-bit apps (11.1) >>> Compilers available for this platform, but not found: >>> --fcompiler=absoft Absoft Corp Fortran Compiler >>> --fcompiler=compaqv DIGITAL or Compaq Visual Fortran Compiler >>> --fcompiler=g95 G95 Fortran Compiler >>> --fcompiler=gnu GNU Fortran 77 compiler >>> --fcompiler=gnu95 GNU Fortran 95 compiler >>> --fcompiler=intelem Intel Fortran Compiler for EM64T-based apps >>> --fcompiler=intelev Intel Visual Fortran Compiler for Itanium apps >>> --fcompiler=intelvem Intel Visual Fortran Compiler for 64-bit apps >>> Compilers not available on this platform: >>> --fcompiler=compaq Compaq Fortran Compiler >>> --fcompiler=hpux HP Fortran 90 Compiler >>> --fcompiler=ibm IBM XL Fortran Compiler >>> --fcompiler=intel Intel Fortran Compiler for 32-bit apps >>> --fcompiler=intele Intel Fortran Compiler for Itanium apps >>> --fcompiler=lahey Lahey/Fujitsu Fortran 95 Compiler >>> --fcompiler=mips MIPSpro Fortran Compiler >>> --fcompiler=nag NAGWare Fortran 95 Compiler >>> --fcompiler=none Fake Fortran compiler >>> --fcompiler=pg Portland Group Fortran Compiler >>> --fcompiler=sun Sun or Forte Fortran 95 Compiler >>> --fcompiler=vast Pacific-Sierra Research Fortran 90 Compiler >>> For compiler details, run 'config_fc --verbose' setup command. >>> >>> On Tue, Apr 26, 2011 at 4:36 PM, Pearu Peterson >>> <[email protected]> wrote: >>>> >>>> >>>> On 04/26/2011 09:31 AM, Ben Forbes wrote: >>>>> When I try that I get an error: >>>>> >>>>> numpy.distutils.fcompiler.CompilerNotFound >>>> >>>> What is the output of the following command: >>>> >>>> f2py -c --help-fcompiler >>>> >>>> Pearu >>>> >>>>> On Tue, Apr 26, 2011 at 4:07 PM, Pearu Peterson >>>>> <[email protected]> wrote: >>>>>> >>>>>> >>>>>> On 04/26/2011 06:09 AM, Ben Forbes wrote: >>>>>>> On Mon, Apr 25, 2011 at 5:34 PM, Ben Forbes<[email protected]> wrote: >>>>>>>> I'm having trouble getting f2py (from Enthought 7.0.2 64-bit) to play >>>>>>>> nicely with my compiler (Intel Visual Fortran 11 build 067). I am >>>>>>>> running Windows 7 64-bit. My source file is just a hello world >>>>>>>> subroutine, and I am running "f2py -c helloworld.f90". >>>>>>> >>>>>>> I've made some progress on this: >>>>>>> - I use "f2py helloworld.f90" to get helloworldmodule.c. >>>>>>> - I copy over fortranobject.c and fortranobject.h. >>>>>>> - I manually compile the C files using mingw 64-bit to get .o files. >>>>>> >>>>>> Btw, have you tried >>>>>> >>>>>> f2py -c -m foo helloworld.f90 --compiler=mingw32 --fcompiler=intelem >>>>>> >>>>>> Pearu >>>>>> >>>>>>> - I manually compile helloworld.f90 to .obj. >>>>>>> - Now I to use lib.exe (from Visual C) to link everything together. >>>>>>> - I rename the resultant .lib to helloworld.pyd. >>>>>>> >>>>>>> The problem I'm currently getting is that when I try to "import >>>>>>> helloworld", it tells me: >>>>>>> >>>>>>> ImportError: DLL load failed: %1 is not a valid Win32 application. >>>>>>> >>>>>>> It appears I need a DLL with an entry point. How would I achieve this? >>>>>>> >>>>>>> Here are my commands for reference: >>>>>>> >>>>>>> C:\MinGW_64\bin\x86_64-w64-mingw32-gcc.exe -g -DDEBUG -DMS_WIN64 >>>>>>> -mno-cygwin -O0 -Wall -Wstrict-prototypes >>>>>>> -IC:\Python27\lib\site-packages\numpy\core\include >>>>>>> -IC:\Python27\include -IC:\Python27\PC -c fortranobject.c -o >>>>>>> fortranobject.o >>>>>>> >>>>>>> C:\MinGW_64\bin\x86_64-w64-mingw32-gcc.exe -g -DDEBUG -DMS_WIN64 >>>>>>> -mno-cygwin -O0 -Wall -Wstrict-prototypes >>>>>>> -IC:\Python27\lib\site-packages\numpy\core\include >>>>>>> -IC:\Python27\include -IC:\Python27\PC -c helloworldmodule.c -o >>>>>>> helloworldmodule.o >>>>>>> >>>>>>> "C:\Program Files (x86)\Intel\Compiler\11.1\067\bin\intel64\ifort.exe" >>>>>>> /MT /c helloworld.f90 >>>>>>> >>>>>>> "C:\Program Files (x86)\Microsoft Visual Studio >>>>>>> 9.0\VC\Bin\x86_amd64\lib.exe" fortranobject.o helloworldmodule.o >>>>>>> helloworld.obj c:\Python27\libs\python27.lib /LIBPATH:"C:\Program >>>>>>> Files (x86)\Intel\Compiler\11.1\067\lib\ia32" /LIBPATH:"C:\Program >>>>>>> Files (x86)\Microsoft Visual Studio 9.0\VC\Lib" /LIBPATH:"C:\Program >>>>>>> Files (x86)\Microsoft Visual Studio 9.0\VC\PlatformSDK\Lib" >>>>>>> >>>>>>> >>>>>>> >>>>>>>> The first >>>>>>>> apparent errors are when ifort is called: >>>>>>>> >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/shared' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/shared' >>>>>>>> ifort: command line warning #10161: unrecognized source type >>>>>>>> 'c:\users\bdforbes\appdata\local\temp\tmpu >>>>>>>> pntzq\Release\users\bdforbes\appdata\local\temp\tmpupntzq\src.win-amd64-2.7\untitledmodule.o'; >>>>>>>> object f >>>>>>>> ile assumed >>>>>>>> ifort: command line warning #10161: unrecognized source type >>>>>>>> 'c:\users\bdforbes\appdata\local\temp\tmpu >>>>>>>> pntzq\Release\users\bdforbes\appdata\local\temp\tmpupntzq\src.win-amd64-2.7\fortranobject.o'; >>>>>>>> object fi >>>>>>>> le assumed >>>>>>>> ifort: command line warning #10161: unrecognized source type >>>>>>>> 'c:\users\bdforbes\appdata\local\temp\tmpu >>>>>>>> pntzq\Release\helloworld.o'; object file assumed >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/LC:\Python27\libs' >>>>>>>> ifort: command line warning #10006: ignoring unknown option >>>>>>>> '/LC:\Python27\PCbuild\amd64' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/lpython27' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/OU' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/OT' >>>>>>>> ifort: command line warning #10155: ignoring option '/optimize'; >>>>>>>> argument required >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/O.' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/O\' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/Ou' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/On' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/Ol' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/Oe' >>>>>>>> ifort: command line warning #10006: ignoring unknown option '/O.' >>>>>>>> ifort: command line remark #10010: option '/Op' is deprecated and will >>>>>>>> be removed in a future release. >>>>>>>> See '/help deprecated' >>>>>>>> >>>>>>>> Is it possible for me to provide f2py with a pre-compiled object file >>>>>>>> or static library? I know how to produce .obj and .lib, not sure how >>>>>>>> to turn those into .o or .a or .so. >>>>>>>> >>>>>>>> Thanks for your help. >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Benjamin D. Forbes >>>>>>>> School of Physics >>>>>>>> The University of Melbourne >>>>>>>> Parkville, VIC 3010, Australia >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> f2py-users mailing list >>>>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >>>>>> http://cens.ioc.ee/mailman/listinfo/f2py-users >>>>>> >>>>> >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> f2py-users mailing list >>>> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >>>> http://cens.ioc.ee/mailman/listinfo/f2py-users >>>> >>> >>> >>> >> >> _______________________________________________ >> f2py-users mailing list >> f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] >> http://cens.ioc.ee/mailman/listinfo/f2py-users >> > > >