Making 'compiled' modules work with multiple python versions on Linux

Barry Scott barry at barrys-emacs.org
Fri Mar 29 12:45:58 EDT 2024



> On 29 Mar 2024, at 16:09, Olivier B. <perso.olivier.barthelemy at gmail.com> wrote:
> 
> It is not a symlink on my system, where i built python myself, but a
> 15KB so file. But it seems to lack lots of python symbols.
> 
> Maybe what i should do is actually make libpython.so a physical copy
> of libpyton311.so before linking to it, so now on any system the
> module would look to load libpython.so, which could be pointing to any
> version. I'll try that next

You do not link against the .so at all. All the symbols you need are defined in the
python process that loads the extension. Try without the -lpython and it should
just work.

Barry


> 
> Le ven. 29 mars 2024 à 10:10, Barry <barry at barrys-emacs.org> a écrit :
>> 
>> 
>> 
>>> On 28 Mar 2024, at 16:13, Olivier B. via Python-list <python-list at python.org> wrote:
>>> 
>>> But on Linux, it seems that linking to libpython3.so instead of
>>> libpython3.11.so.1.0 does not have the same effect, and results in
>>> many unresolved python symbols at link time
>>> 
>>> Is this functionality only available on Windows?
>> 
>> Python limited API works on linux, but you do not link against the .so on linux I recall.
>> 
>> You will have missed that libpython3.so is a symlink to libpython3.11.so.10.
>> 
>> Windows build practices do not translate one-to-one to linux, or macOS.
>> 
>> Barry
>> 
>> 
> 



More information about the Python-list mailing list