GNU/Linux >> Znalost Linux >  >> Linux

dlsym vrátí NULL, i když symbol existuje

Nemyslím si, že to dokážete, dlsym funguje na exportovaných symbolech. Protože děláte dlsym dne NULL (aktuální obrázek), i když jsou symboly přítomny ve spustitelném obrázku ELF, nejsou exportovány (protože se nejedná o sdílenou knihovnu).

Proč to nezavolat přímo a nechat linker, aby se o to postaral? Nemá smysl používat dlsym abyste získali symboly ze stejného obrázku jako váš dlsym volání. Pokud je vaše testing symbol byl ve sdílené knihovně, kterou jste buď propojili, nebo načetli pomocí dlopen pak byste jej mohli získat.

Věřím, že existuje také způsob exportu symbolů při vytváření spustitelných souborů (-Wl,--export-dynamic jak je uvedeno v komentáři od Brandona), ale nejsem si jistý, proč byste to chtěli udělat.


Linux
  1. Rozdělit jednotlivé znaky pomocí řetězce Null?

  2. Jaký je účel „uživatele systému“ v replikaci MySQL

  3. nm :Příkaz pro výpis symbolů v objektových souborech.

  1. Linux, proč nemohu psát, i když mám skupinová oprávnění?

  2. Jak přesměrovat výstup aplikace na pozadí do /dev/null

  3. Kontrola, zda existuje obrazovka se zadaným názvem

  1. Instalace PIP nemůže najít ffi.h, i když rozpoznává libffi

  2. PyODBC:nelze otevřít ovladač, i když existuje

  3. Virtualenv používá nesprávný python, i když je první v $PATH