hallo miteinander!
gibt es einen Plan, wie ein Programm per dlopen() seine libfoo.so finden kann? Der aktuelle Anlass: hc12mem¹ möchte die libusb.so benutzen und verwendet genau diesen kurzen Namen. Es ist eine reine 32-Bit-Installation (wheezy), aber viele libs sind trotzdem in neuen Verzeichnissen "versteckt".
Laut Debian New Maintainers' Guide² soll ein dev-Package einen symlink ohne Versionsnummer erzeugen. Allerdings nützt der nichts, wenn er unter nicht unter /lib oder /usr/lib erstellt wird. Woher soll ein altes Programm den neuen multiarch-Pfad kennen? Und warum muss man dafür das dev-Paket installieren? Dass keins der libusb-Pakete einen symlink erzeugt, ist auch kein Trost.
1) http://sourceforge.net/projects/hcs12mem/
2) http://www.debian.org/doc/manuals/maint ... #multiarch
multiarch und dlopen oder: was ist aus libfoo.so geworden?
multiarch und dlopen oder: was ist aus libfoo.so geworden?
Beware of programmers who carry screwdrivers.
Re: multiarch und dlopen oder: was ist aus libfoo.so geworde
$ apt-file search --regexp "(/usr)?/lib(32)?/.*/libusb.so"
ich glaube
sollte dir helfen. Siehe man ldopen
ich glaube
Code: Alles auswählen
export LD_LIBRARY_PATH=/lib:/usr/lib:/lib32:/usr/lib32
Zuletzt geändert von wanne am 05.08.2013 23:01:08, insgesamt 1-mal geändert.
rot: Moderator wanne spricht, default: User wanne spricht.
Re: multiarch und dlopen oder: was ist aus libfoo.so geworde
Danke, das brachte die Erleuchtung: ich hatte zwar libusb-1.0-0-dev installiert, aber nicht libusb-dev; jetzt geht's. Immerhin muss man nicht schwere Geschütze wie LD_LIBRARY_PATH auffahren.wanne hat geschrieben:$ apt-file search --regexp "(/usr)?/lib/.*/libusb.so"
Mich würde trotzdem interessieren, warum ich als normaler Anwender die -dev-Pakete installieren muss. Sollte der Link nicht schon vom normalen Paket eingerichtet werden? Oder werden Programme entsprechend gepatched wenn ein Debian-Paket gebaut wird? Von libusb-dev hängt nämlich kein normales Paket ab und mein hc12mem stammt nicht von Debian...
Beware of programmers who carry screwdrivers.