SONAME aus dlopen?

15/03/2014 - 18:40 von ole-usenet-spam | Report spam
Hallo Gruppe,

gibt es eine Möglichkeit, mittels Standard-C-Aufruf den SONAME der
Bibliothek herauszufinden, den eine bestimmte Funktion (z.B. mittels
dlopen) hat?

Hintergrund: Ich habe eine Reihe von Plugins, die gegen eine Bibliothek
(in verschiedenen Versionen) gelinkt sein können -- und zwar ohne dass
ich beim Aufruf genau weiß, wo genau diese Bibliothek liegt. Zur
Kompatibilitàtsprüfung würde ich gerne den SONAME verwenden:

8<-
void *handle = dlopen("plugin.o", RTLD_LAZY);
void *init = dlsym(handle, "cpl_init");
char *soname = get_libsoname(init);
if (strcmp(soname, "libcpl.so.1") == 0) {
// call init like needed for version 1
} else if (strcmp(soname, "libcpl.so.2") == 0) {
// call init like needed for version 2
} else {
// handle the case of unknown API
}
8<-

Wie mache ich das am besten?

Schöne Grüße

Ole
 

Lesen sie die antworten

#1 Bastian Blank
16/03/2014 - 10:06 | Warnen spam
Оlе Ѕtrеісhеr wrote:
Wie mache ich das am besten?



Gar nicht. Die Plugins sind schon korrekt gelinkt, kümmern sich also um
das Haushalten selber, wie jede andere Library auch.

Bastian

Ähnliche fragen