Re: [f2py] Compiling/linking the Fortran source files manually
Ben Forbes <[email protected]> Tue, 26 Apr 2011 16:51:56 +1000
| Newsgroups | gmane.comp.python.f2py.user |
|---|---|
| Message-ID | <[email protected]> |
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. 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 > -- Benjamin D. Forbes School of Physics The University of Melbourne Parkville, VIC 3010, Australia