¿Qué significa "carga de .so
archivos de la memoria" para usted?
Si tiene *.so
archivo, entonces está en algún sistema de archivos, y tiene una ruta de acceso. Entonces solo usa dlopen
en él.
Si no es un archivo , ¿qué es? ¿Cómo te metiste en la memoria? ¿Qué tienes exactamente en la memoria? (¿Tiene un encabezado ELF y diseño ELF en memoria?)
Si tiene suficiente información para crear un archivo ELF *.so
, vacíe (es decir, escriba) dicho archivo en algún sistema de archivos (utilice un sistema de archivos temporal como tmpfs
si están preocupados con el rendimiento del disco). Entonces dlopen
eso.
Si no tiene suficiente información para hacer un archivo ELF .so
, entonces probablemente esté generando código dinámicamente en la memoria. Mire qué infraestructura de generación de código de máquina existente (como LLVM, GCCJIT, libjit, GNU lightning, LuaJit ....) están haciendo.
Si usted tiene un código funcional completa en la memoria, asegúrese de que la memoria es ejecutable con mmap & mprotect y saltar en él (por ejemplo,usando trucos de puntero de función).
.so se envía a través de una conexión de socket, y estoy buscando una solución de compañero, no una alternativa. – killercode
@killercode está buscando una solución a un problema que ha definido de forma bastante estricta. Actualmente no tiene el conocimiento para codificar .so de la memoria y quiere pagarle a alguien para que lo haga. Las alternativas tienen más sentido, a menos que nos pueda dar algún contexto. –
.so se envía por sockets, no quiero escribirlo en el disco ya que mi aplicación puede no tener el privilegio de escribir archivos en el disco, por lo que quiero ejecutarlo desde la memoria para evitar cualquiera de esos en cualquier plataforma y no solo linux. – killercode