GNU/Linux >> LINUX-Kenntnisse >  >> Linux

dlsym gibt NULL zurück, obwohl das Symbol existiert

Ich glaube nicht, dass du das kannst, dlsym funktioniert mit exportierten Symbolen. Weil Sie dlsym machen am NULL (aktuelles Bild), obwohl die Symbole im ausführbaren ELF-Bild vorhanden sind, werden sie nicht exportiert (da es sich nicht um eine gemeinsam genutzte Bibliothek handelt).

Warum nicht direkt aufrufen und den Linker sich darum kümmern lassen? Es hat keinen Sinn, dlsym zu verwenden um Symbole aus demselben Bild wie Ihr dlsym zu erhalten Anruf. Wenn Ihr testing Symbol befand sich in einer gemeinsam genutzten Bibliothek, die Sie entweder verknüpft oder mit dlopen geladen haben dann könnten Sie es abrufen.

Ich glaube, es gibt auch eine Möglichkeit, Symbole beim Erstellen von ausführbaren Dateien zu exportieren (-Wl,--export-dynamic wie in einem Kommentar von Brandon erwähnt), aber ich bin mir nicht sicher, warum Sie das tun möchten.


Linux
  1. Einzelne Zeichen mit dem Null-String heraustrennen?

  2. Was ist das Newline-Symbol in Zshs Ps1?

  3. Linux, warum kann ich nicht schreiben, obwohl ich Gruppenrechte habe?

  4. So leiten Sie die Ausgabe einer Anwendung im Hintergrund nach /dev/null um

  5. Die Node.js-App kann nicht auf Port 80 ausgeführt werden, obwohl kein anderer Prozess den Port blockiert

PIP-Installation kann ffi.h nicht finden, obwohl es libffi erkennt

PyODBC:Der Treiber kann nicht geöffnet werden, selbst wenn er vorhanden ist

Virtualenv verwendet falsches Python, obwohl es an erster Stelle in $PATH steht

Was bedeutet das Linux-Pipe-Symbol | tun?

die Verwendung von < /dev/null &in der Kommandozeile

`Berechtigung verweigert` zum CD in ein Verzeichnis, obwohl die Berechtigungen korrekt sind