[Python] ctypes importare libreria

Massimiliano Rosi massimiliano.rosi a gmail.com
Mar 4 Lug 2017 13:25:54 CEST


Ciao,

ho fatto una verifica con LD_DEBUG=files e lanciato il comando


PYTHON2: /mnt/nand/python2.7/bin/python -c "import ctypes as c; libpack =
c.CDLL('/mnt/nor/libpack.so', mode=c.RTLD_GLOBAL)"
PYTHON3: /mnt/nand/python3.6/bin/python -c "import ctypes as c; libpack =
c.CDLL('/mnt/nor/libpack.so', mode=c.RTLD_GLOBAL)"

e le differenze sono su 3 librerie che in python3 non vengono caricate,
come da dettaglio seguente (output del comando con python 2.7):

[...]
    24305: file=libssl.so.1.0.0 [0];  needed by
/mnt/nand/python2.7/bin/python [0]
     24305: file=libssl.so.1.0.0 [0];  generating link map
     24305:  dynamic: 0x400f1980  base: 0x400a3000   size: 0x00051d6c
     24305:    entry: 0x400b1138  phdr: 0x400a3034  phnum:          5
     24305:
     24305:
     24305: file=libcrypto.so.1.0.0 [0];  needed by
/mnt/nand/python2.7/bin/python [0]
     24305: file=libcrypto.so.1.0.0 [0];  generating link map
     24305:  dynamic: 0x40344378  base: 0x401f6000   size: 0x0015774c
     24305:    entry: 0x40230b4c  phdr: 0x401f6034  phnum:          5
     24305:
     24305:
     24305: file=libz.so.1 [0];  needed by /mnt/nand/python2.7/bin/python
[0]
     24305: file=libz.so.1 [0];  generating link map
     24305:  dynamic: 0x4036b4e0  base: 0x4034e000   size: 0x0001d6fc
     24305:    entry: 0x4034f790  phdr: 0x4034e034  phnum:          5
[...]

e quindi con LD_DEBUG=symbols ho verificato che proprio una di queste
contiene il symbol inflateEnd che genera l'errore:

python2
[...]
     24749: symbol=syslog;  lookup in file=/lib/libc.so.6 [0]
     24749: symbol=inflateEnd;  lookup in
file=/mnt/nand/python2.7/bin/python [0]
     24749: symbol=inflateEnd;  lookup in file=/lib/libpthread.so.0 [0]
     24749: symbol=inflateEnd;  lookup in file=/lib/libdl.so.2 [0]
     24749: symbol=inflateEnd;  lookup in file=/lib/libutil.so.1 [0]
     24749: symbol=inflateEnd;  lookup in file=/lib/libssl.so.1.0.0 [0]
     24749: symbol=inflateEnd;  lookup in file=/lib/libcrypto.so.1.0.0 [0]
     24749: symbol=inflateEnd;  lookup in file=/lib/libz.so.1 [0]
     24749: symbol=__gmon_start__;  lookup in
file=/mnt/nand/python2.7/bin/python [0]
     24749: symbol=__gmon_start__;  lookup in file=/lib/libpthread.so.0 [0]
[...]

python3
[...]
     24638: symbol=syslog;  lookup in file=/lib/libc.so.6 [0]
     24638: symbol=inflateEnd;  lookup in
file=/mnt/nand/python3.6/bin/python [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libpthread.so.0 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libdl.so.2 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libutil.so.1 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/librt.so.1 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libm.so.6 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libgcc_s.so.1 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libc.so.6 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/ld-linux.so.3 [0]
     24638: symbol=inflateEnd;  lookup in file=/mnt/nor/libpack.so [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libgcc_s.so.1 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/libc.so.6 [0]
     24638: symbol=inflateEnd;  lookup in file=/lib/ld-linux.so.3 [0]
     24638: /mnt/nor/libpack.so: error: symbol lookup error: undefined
symbol: inflateEnd (fatal)
     24638: symbol=__dcgettext;  lookup in
file=/mnt/nand/python3.6/bin/python [0]
     24638: symbol=__dcgettext;  lookup in file=/lib/libpthread.so.0 [0]
[...]

Ora che è più chiaro il motivo dell'errore, avrei bisogno ancora di un
aiuto per capire come risolvere il problema...

Grazie!

Ciao.

M.


Il giorno 4 luglio 2017 09:47, Gian Mario Tagliaretti <
g.tagliaretti a gmail.com> ha scritto:

> 2017-07-04 9:32 GMT+02:00 Massimiliano Rosi <massimiliano.rosi a gmail.com>:
>
> > Sono parallele ma non di sistema, perché sono state installate
> > successivamente compilando dai sorgenti
>
> > Entrambi sono stati installati in cartelle separate e i percorsi sono:
> >
> > python2: /mnt/nand/python2.7/bin
> > python3: /mnt/nand/python3.6/bin
>
> purtroppo da qua è difficile, per qualche ragione python3 non risolve
> il link, indaga su cosa viene aperto da ciascuno dei comandi:
>
> export LD_DEBUG=files
>
> e poi esegui l'import da python2 e python3 e cerca le differenze di
> comportamento, preparati ad un output..ehm... piuttosto verboso.
>
> Ciao
> --
> Gian Mario Tagliaretti
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 

*"A parte l'uomo, tutti gli animali sanno che lo scopo principale della
vita è godersela"*
*Samuel Butler*
--
*rosi::LAB di Ro**si Massimiliano*
Mobile: +39 328.3065575
Fax: +39 178.2280639
E-mail: massimiliano.rosi a gmail.com
Pec: massimiliano.rosi a pec.it
Skype: papipano
LinkedIn: Massimiliano Rosi

----------------
"Avvertenze ai sensi del D.Lgs.196 del 30/06/2003
Le informazioni contenute in questo messaggio di posta elettronica
e/o files allegati, sono da considerarsi strettamente riservati.
Il loro utilizzo è consentito esclusivamente al destinatario del
messaggio, per le finalità indicate nello stesso.
Costituisce violazione ai principi dettati dal D.Lgs. 196/2003:
trattenere il messaggio stesso, divulgarlo anche in parte, distribuirlo
ad altri soggetti, copiarlo o utilizzarlo per finalità diverse.
Qualora riceveste questo messaggio senza esserne il destinatario
Vi preghiamo cortesemente di darcene notizia via e-mail
e di procedere alla distruzione del messaggio stesso,
cancellandolo dal Vostro sistema.
Grazie."
----------------
Nota: per proteggere il computer dai virus, le applicazioni di posta
elettronica impediscono l'invio o la ricezione di alcuni tipi di
allegati. Per determinare la modalità di gestione degli allegati,
controllare le impostazioni di protezione della posta elettronica.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20170704/22af1451/attachment.html>


Maggiori informazioni sulla lista Python