[Numpy-discussion] Calling routines from a Fortran library using python

Nils Wagner nwagner@iam.uni-stuttgart...
Thu Feb 18 08:47:01 CST 2010


On Thu, 18 Feb 2010 15:32:12 +0100
  Dag Sverre Seljebotn <dagss@student.matnat.uio.no> 
wrote:
> David Cournapeau wrote:
>> On Thu, Feb 18, 2010 at 10:22 PM, Nils Wagner
>> <nwagner@iam.uni-stuttgart.de> wrote:
>>   
>>> On Thu, 18 Feb 2010 11:55:07 +0100
>>>  Matthieu Brucher <matthieu.brucher@gmail.com> wrote:
>>>     
>>>>> Ok I have extracted the *.o files from the static
>>>>> library.
>>>>>
>>>>> Applying the file command to the object files yields
>>>>>
>>>>> ELF 64-bit LSB relocatable, AMD x86-64, version 1
>>>>> (SYSV),
>>>>> not stripped
>>>>>
>>>>> What's that supposed to mean ?
>>>>>         
>>>> It means that each object file is an object file
>>>> compiled with -fPIC,
>>>> so you just have to make a shared library (gfortran
>>>> -shared *.o -o
>>>> libmysharedlibrary.so)
>>>>
>>>> Then, you can try to open the library with ctypes. If
>>>> something is
>>>> lacking, you may have to add -lsome_library to the
>>>> gfortran line.
>>>>
>>>> Matthieu
>>>> --
>>>> Information System Engineer, Ph.D.
>>>> Blog: http://matt.eifelle.com
>>>> LinkedIn: http://www.linkedin.com/in/matthieubrucher
>>>>       
>>> O.k. I tried
>>>
>>> gfortran -shared *.o -o libmysharedlibrary.so
>>>
>>> /usr/bin/ld: dxop.o: relocation R_X86_64_32 against `a
>>> local symbol' can not be used when making a shared 
>>>object;
>>> recompile with -fPIC
>>>     
>>
>> The message is pretty explicit: it is not compiled with 
>>-fPIC, there
>> is nothing you can do, short of requesting a shared 
>>library from the
>> software vendor.
>>   
> Well, I think one can make a static executable with C or 
>Cython and 
> embed the Python interpreter. But it is pretty 
>complicated stuff, and 
> requesting a shared library is vastly preferable.
> 
> Dag Sverre
> 
  
Can you shed light on your approach ?

Nils





More information about the NumPy-Discussion mailing list