Shared Library Loading Problem (Python)

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Wargath
Beiträge: 12
Registriert: 24.08.2008 00:43:37

Shared Library Loading Problem (Python)

Beitrag von Wargath » 24.08.2008 08:59:16

Hallo

Ich habe auf meinem Lenny System eine Python Extension installiert (von den Sourcen) welche wiederum eine shared library benötigt wird welche ich einen Schritt davor ebenfalls von den sourcen installiert habe.

Wenn ich nun versuche besagtes Python modul im Python interpreter zu importieren bekomme ich:

Code: Alles auswählen

Python 2.5.2 (r252:60911, Aug 16 2008, 14:25:14)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyactivemq
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libactivemq-cpp.so.3: cannot open shared object file: No such file or directory
libactivemq-cpp.so ist jedoch vorhanden und befindet sich in /usr/local/lib

Tieferes graben fördete das zu Tage:

Code: Alles auswählen

[root@domU-12-31-38-00-95-D1 /] cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

[root@domU-12-31-38-00-95-D1 /] l /etc/ld.so.conf.d/
total 12
-rw-r--r-- 1 root root  64 2008-03-28 02:09 i486-linux-gnu.conf
-rw-r--r-- 1 root root 323 2008-03-28 02:21 libc6-xen.conf
-rw-r--r-- 1 root root  44 2008-03-28 02:09 libc.conf

[root@domU-12-31-38-00-95-D1 /] cat /etc/ld.so.conf.d/libc.conf
# libc default configuration
/usr/local/lib
Also sollte doch eigentlich /usr/local/lib im shared library suchpfad sein und obiges Problem garnicht auftreten oder? Ich kann das problem beheben in dem ich die Library händisch nach /usr/lib kopiere oder einen Link erstelle aber irgendwie wüsste ich gern warum das Problem überhaupt besteht.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Library Loading Problem (Python)

Beitrag von gms » 24.08.2008 16:21:19

Also sollte doch eigentlich /usr/local/lib im shared library suchpfad sein und obiges Problem garnicht auftreten oder?
versuch einmal, ob die Library nach einem Aufruf von "ldconfig" gefunden wird.

Gruß
gms

Wargath
Beiträge: 12
Registriert: 24.08.2008 00:43:37

Re: Shared Library Loading Problem (Python)

Beitrag von Wargath » 24.08.2008 16:35:05

gms hat geschrieben:
Also sollte doch eigentlich /usr/local/lib im shared library suchpfad sein und obiges Problem garnicht auftreten oder?
versuch einmal, ob die Library nach einem Aufruf von "ldconfig" gefunden wird.

Gruß
gms
Danke! Sie wird nun gefunden ohne symbolic link. Ich hab mir zwar die man page von ldconfig angesehen aber warum war der Aufruf eigentlich nötig auf einem frischen system?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shared Library Loading Problem (Python)

Beitrag von gms » 24.08.2008 16:43:37

damit der Cache für den Runtime-Linker upgedated wird, wird in diesem Cache nichts gefunden, wird nur in /lib und /usr/lib nach einer entsprechenden Library gesucht, außer du würdest /usr/local/lib in die LD_LIBRARY_PATH Environmentvariable aufnehmen
edit: oder das aufrufende Programm hätte eine RPATH-Eintrag

Gruß
gms

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Shared Library Loading Problem (Python)

Beitrag von Spasswolf » 24.08.2008 16:51:42

Im Standardsuchpfad sind nur /lib/ und /usr/lib/, Libraries werden aber auch in /etc/ld.so.cache gesucht, in den die Library aus /usr/local/lib von ldconfig eingetragen wurde. Die Pfade neben den Standardpfaden, die bei der Erstellung von /etc/ld.so.cache berücksichtigt werden, stehen in /etc/ld.so.conf. (Mehr in "man ld.so")

Wargath
Beiträge: 12
Registriert: 24.08.2008 00:43:37

Re: Shared Library Loading Problem (Python)

Beitrag von Wargath » 24.08.2008 17:44:00

Ah ok das macht Sinn. Besten Dank an alle.

Antworten