[f2py] Compiling/linking the Fortran source files manually
Ben Forbes
bdforbes at gmail.com
Tue Apr 26 09:39:08 EEST 2011
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
<pearu.peterson at gmail.com> 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
>> <pearu.peterson at gmail.com> wrote:
>>>
>>>
>>> On 04/26/2011 06:09 AM, Ben Forbes wrote:
>>>> On Mon, Apr 25, 2011 at 5:34 PM, Ben Forbes<bdforbes at gmail.com> 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 at cens.ioc.ee
>>> http://cens.ioc.ee/mailman/listinfo/f2py-users
>>>
>>
>>
>>
>
> _______________________________________________
> f2py-users mailing list
> f2py-users at cens.ioc.ee
> http://cens.ioc.ee/mailman/listinfo/f2py-users
>
--
Benjamin D. Forbes
School of Physics
The University of Melbourne
Parkville, VIC 3010, Australia
More information about the f2py-users
mailing list