GNU/Linux >> Tutoriales Linux >  >> Linux

dlsym devuelve NULL, aunque el símbolo existe

No creo que puedas hacer eso, dlsym funciona en símbolos exportados. Porque estás haciendo dlsym el NULL (imagen actual), aunque los símbolos están presentes en la imagen ELF ejecutable, no se exportan (ya que no es una biblioteca compartida).

¿Por qué no llamarlo directamente y dejar que el enlazador se encargue de ello? No tiene sentido usar dlsym para obtener símbolos de la misma imagen que tu dlsym llamar. Si tu testing el símbolo estaba en una biblioteca compartida que vinculaste o cargaste usando dlopen entonces podrías recuperarlo.

Creo que también hay una forma de exportar símbolos al crear ejecutables (-Wl,--export-dynamic como se menciona en un comentario de Brandon), pero no estoy seguro de por qué querrías hacer eso.


Linux
  1. ¿Dividir caracteres individuales usando la cadena nula?

  2. ¿Qué es el símbolo de nueva línea en la Ps1 de Zsh?

  3. ¿Cuál es el propósito de "usuario del sistema" en MySQL Replication

  4. nm :Comando para listar los símbolos en archivos de objetos.

  5. Comprobar si existe una pantalla con el nombre especificado

¿Qué significan los símbolos mostrados por Ls -f?

¿No queda espacio en el dispositivo aunque lo haya?

Linux, ¿por qué no puedo escribir aunque tengo permisos de grupo?

Cómo redirigir la salida de una aplicación en segundo plano a /dev/null

Virtualenv usa python incorrecto, aunque es el primero en $PATH

El ejecutable de Linux falla con Archivo no encontrado a pesar de que el archivo está allí y en PATH