Ich habe einen C++ 14 Code, der eine beliebige gemeinsame Objektdatei mit dlopen
laden soll. Leider können diese So-Dateien auf einigen Systemen (z. B. mein Archlinux, gilt auch für einige .so auf Ubuntu und Gentoo) "GNU-ld-Skripte" anstelle der tatsächlichen Binärdateien sein.Loading GNU ld Skript mit dlopen
Als Referenz hier ist der Inhalt meiner /usr/lib/libm.so
:
/* GNU ld script
*/
OUTPUT_FORMAT(elf64-x86-64)
GROUP (/usr/lib/libm.so.6 AS_NEEDED (/usr/lib/libmvec.so.1))
Ich habe ein paar Code-Stücke gefunden, die in ghc oder ruby mit diesem Thema beschäftigen. Ich möchte vermeiden, die Textdatei, die den dlerror
Text und die Datei analysiert, manuell zu analysieren. Ich denke, das ist schrecklich böse und ich werde keine Eckfälle dieses Formats implementieren und pflegen können.
Gibt es eine saubere Möglichkeit, diesen Fall zu implementieren? Ehrlich gesagt bin ich verwirrt, warum dlopen
nicht wirklich diese tranparently behandelt.
Hinweis: In Anbetracht der oben genannten Patches denke ich, dass dies nicht nur ein Problem mit meiner Systemkonfiguration/Versionen ist. Wenn dies mit dlopen
out-of-the-box funktioniert (Bug statt fehlende Funktion), lass es mich wissen.
Ist Ihre ld.so gerade neu genug? – marcolz
Nicht im Zusammenhang mit einer bestimmten Sprache, sondern zum Laden/Verknüpfen. – Olaf
@Olaf Ich suche eine Lösung, die ich in meinem C++ Programm verwenden kann. Da ich die Bibliothek während der Laufzeit mit C++/C-Code lade, denke ich darüber nach. – Zulan