[f2py] Compiling/linking the Fortran source files manually

Ben Forbes bdforbes at gmail.com
Tue Apr 26 10:49:26 EEST 2011


Modifying PATH makes it find the 64-bit compiler now. However, I'm
still getting the same issues with the compiler and linker flags:

ifort: command line warning #10006: ignoring unknown option '/shared'
ifort: command line warning #10006: ignoring unknown option '/shared'
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 '/Of'
ifort: command line warning #10006: ignoring unknown option '/Oo'
ifort: command line warning #10006: ignoring unknown option '/Oo'
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'
ifort: command line warning #10148: option '-Oy' not supported

On Tue, Apr 26, 2011 at 5:34 PM, Pearu Peterson
<pearu.peterson at gmail.com> wrote:
>
>
> On 04/26/2011 10:19 AM, Ben Forbes wrote:
>> The version match text is "EM64T-based|Intel\\(R\\) 64", and my
>> compiler gives "Intel(R) Visual Fortran Intel(R) 64 Compiler
>> Professional for applications running on Intel(R) 64, Version 11.1
>> Build 20100806 Package ID: w_cprof_p_11.1.067". So it should actually
>> match both intelem and intelvem.
>
> I am not sure which numpy.distutils version you have (I am using the
> one form git repo) and indeed the versions should match when I read
> the code. So, try to fix the intel.py script so that it will
> successfully find either intelem or intelvem. You can run the
> intel.py script directly, just fix one line at the end of
> the script to
>
>   compiler = new_fcompiler(compiler='intelem')
>
> for instance.
>
> Another note: so you have both 32 and 64 bit versions of intel
> compilers installed in the system. Perhaps numpy.distutils finds
> 32-bit ifort program first in the PATH variable and hence
> it never can try the 64-bit ifort. So, check the naming of
> intel compiler programs and the PATH env. variable.
>
> Pearu
>
>
>> On Tue, Apr 26, 2011 at 5:12 PM, Pearu Peterson
>> <pearu.peterson at gmail.com>  wrote:
>>>
>>>
>>> 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
>>>> <pearu.peterson at gmail.com>    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
>>>>>> <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
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>
>>
>>
>>
>
> _______________________________________________
> 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