Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

fehlende lib

3 views
Skip to first unread message

Volker Kohaupt

unread,
May 28, 2012, 3:36:58 AM5/28/12
to
Hallo,

benutze bei der Entwicklung mit QT zusätzliche libs. Ist z.b eine lib
jetzt nicht auf dem System bricht das Programm schon beim Start ab.
Mir schwebt vor das wenn eine lib nicht auf dem System vorhanden ist das
dies vom Programm abgefragt wird so das die Hauptfunktionalität des
Programms zumindestens gewährleistet wird. Wie löst man so was?

Viele grüße Volker

Stefan Reuther

unread,
May 28, 2012, 4:35:01 AM5/28/12
to
Indem man das Laden nicht den dynamischen Linker erledigen lässt,
sondern mit dlopen/dlsym selber macht.

Gerade bei C++ kann das aber beliebig kompliziert werden, wenn die zu
ladende Bibliothek nicht dafür ausgelegt ist.


Stefan

Hergen Lehmann

unread,
May 28, 2012, 4:54:29 AM5/28/12
to
On 28.05.2012 09:36, Volker Kohaupt wrote:

> Mir schwebt vor das wenn eine lib nicht auf dem System vorhanden ist das
> dies vom Programm abgefragt wird so das die Hauptfunktionalität des
> Programms zumindestens gewährleistet wird. Wie löst man so was?

libdl

Ist aber nur bei einigermaßen schlanken (überschaubare Zahl an
Einsprungpunkten) libs praktikabel.

Hergen

Volker Kohaupt

unread,
May 28, 2012, 7:04:49 AM5/28/12
to
Stefan Reuther schrieb:

> Indem man das Laden nicht den dynamischen Linker erledigen lässt,
> sondern mit dlopen/dlsym selber macht.

Danke werde ich mir anschauen.

Viele grüße Volker

Volker Kohaupt

unread,
May 28, 2012, 7:07:17 AM5/28/12
to
Hergen Lehmann schrieb:
> On 28.05.2012 09:36, Volker Kohaupt wrote:
>
>> Mir schwebt vor das wenn eine lib nicht auf dem System vorhanden ist das
>> dies vom Programm abgefragt wird so das die Hauptfunktionalität des
>> Programms zumindestens gewährleistet wird. Wie löst man so was?
>
> libdl

Danke das werde ich mir auch anschauen.

Viele grüße Volker

Bastian Blank

unread,
May 29, 2012, 12:15:17 PM5/29/12
to
Libraries kann man mit libdl laden. Allerdings muss man dann jedes
Symbol explizit abfragen. Dies macht es unmöglich macht, eine beliebige
Library damit zu laden.

Der einfachste Weg sind Plug-Ins. Dies sind kleine Libraries, welche
sich über bestimmte Schnittstellen im Hauptprogramm registrieren. Dies
benötigt aber eine bereits vorhandene saubere Architektur der
Anwendingen. Diese Plug-Ins linken dann die "problematischen" Libraries
und lassen sich dann halt nicht laden.

Bastian

Bastian Blank

unread,
May 29, 2012, 12:19:15 PM5/29/12
to
Libraries kann man mit libdl laden. Allerdings muss man dann jedes
Symbol explizit abfragen. Dies macht es unmöglich macht, eine beliebige
Library damit zu laden.

Der einfachste Weg sind Plug-Ins. Dies sind kleine Libraries, welche
sich über bestimmte Schnittstellen im Hauptprogramm registrieren. Dies
benötigt aber eine bereits vorhandene saubere Architektur der
Anwendingen. Diese Plug-Ins linken dann die "problematischen" Libraries
und lassen sich dann halt nicht laden.

Infos zu solchen Themen finden sich unter:
https://cis.informatik.uni-tuebingen.de/swa1-ws-1112/downloads/
Genauer in:
https://cis.informatik.uni-tuebingen.de/swa1-ws-1112/downloads/file&id=17

Bastian

Andreas Tscharner

unread,
Sep 23, 2012, 6:17:06 AM9/23/12
to
On 28.05.2012 09:36, Volker Kohaupt wrote:
Also eigentlich sollte das schon das Build-System erledigen, sprich
./configure, cmake, o.ä.

Das gilt allerdings nur, wenn Du den Source-Code auslieferst...

Gruss
Andreas
--
Andreas Tscharner an...@vis.ethz.ch
--------------------------------------------------------------------
Gordon's Law:
If you think you have the solution, the question was poorly phrased.

Edzard Egberts

unread,
Sep 25, 2012, 2:19:02 AM9/25/12
to
Volker Kohaupt schrieb:
> benutze bei der Entwicklung mit QT zusätzliche libs. Ist z.b eine lib
> jetzt nicht auf dem System bricht das Programm schon beim Start ab.

Statisch linken. Gerade bei zusätzlichen libs (jpeg, png, exif, etc.)
macht das oft nur wenige Kilobyte aus und dafür läuft das Programm dann
auf (fast) allen Distributionen. Suche hier doch mal (z.B. Google
Groups) nach dem Thread "Wie Linux Binary ausliefern?", da wurde das
Thema recht gründlich durchgekaut.

Volker Kohaupt

unread,
Feb 3, 2013, 1:43:11 PM2/3/13
to
Volker Kohaupt schrieb:
> Stefan Reuther schrieb:
>
>> Indem man das Laden nicht den dynamischen Linker erledigen l�sst,
>> sondern mit dlopen/dlsym selber macht.
>
> Danke werde ich mir anschauen.

http://openbook.galileocomputing.de/linux_unix_programmierung/Kap17-001.htm#RxxKap170010400061A1F0291A1

Viele gr��e Volker
0 new messages