GNU/Linux >> Linux Esercitazione >  >> Linux

dlsym restituisce NULL, anche se il simbolo esiste

Non penso che tu possa farlo, dlsym funziona sui simboli esportati. Perché stai facendo dlsym il NULL (immagine corrente), anche se i simboli sono presenti nell'immagine ELF eseguibile, non vengono esportati (poiché non è una libreria condivisa).

Perché non chiamarlo direttamente e lasciare che se ne occupi il linker? Non ha senso usare dlsym per ottenere simboli dalla stessa immagine del tuo dlsym chiamata. Se il tuo testing symbol era in una libreria condivisa a cui ti sei collegato o che hai caricato usando dlopen allora sarai in grado di recuperarlo.

Credo che ci sia anche un modo per esportare i simboli durante la creazione di eseguibili (-Wl,--export-dynamic come menzionato in un commento di Brandon) ma non sono sicuro del motivo per cui vorresti farlo.


Linux
  1. Dividere i singoli caratteri usando la stringa nulla?

  2. Qual è il simbolo Newline nella Ps1 di Zsh?

  3. Qual è lo scopo di "utente di sistema" in MySQL Replication

  4. nm :comando per elencare i simboli nei file oggetto.

  5. Controllo dell'esistenza di una schermata del nome specificato

PIP install non riesce a trovare ffi.h anche se riconosce libffi

PyODBC:impossibile aprire il driver anche se esiste

Virtualenv usa un pitone sbagliato, anche se è il primo in $PATH

Cosa significa il simbolo della pipe Linux | fare?

L'eseguibile Linux non riesce con File non trovato anche se il file è presente e in PATH

/bin/ls non trovato, anche se esiste!