Cómo compilar LD_PRELOAD para la mayoría de los sistemas

Tengo un archivo LD_PRELOAD. En qué sistema operativo y condiciones debo compilar esta precarga para que funcione en la mayoría de los sistemas (Unix/Linux). Los más buscados son FreeBSD, Ubuntu, CenstOS, Solaris.

¡Gracias!

preguntado el 12 de junio de 12 a las 12:06

1 Respuestas

Necesita compilarlo en una biblioteca compartida. Así es como normalmente compilo el mío:

libt.so: t.lo
        g++ -fPIC -O3 -W -Wall -shared -Wl,-export-dynamic -o $@ $^ -lc

t.lo: t.cc
        g++ -c -fPIC -O3 -W -Wall $^ -o $@

Luego, para usarlo, agrega la biblioteca a la variable de entorno LD_PRELOAD antes de iniciar ese archivo. Si lo haces así desde el bash línea de comando:

LD_PRELOAD=libt.so executable_name -and args

luego, solo lo configurará para que se ejecute la línea de comando y no afectará a ningún otro programa que inicie después.

Respondido el 12 de junio de 12 a las 12:06

Gracias por su respuesta, ¿puedo darme un archivo MAKE completo, porque cuando uso el suyo obtengo el error *** falta el separador? Mi nombre de archivo fuente - test.cpp - Robert

@Robert: necesita una pestaña en lugar de espacios delante de g++. Saludos. - jxh

Gracias por tu respuesta. ¿Necesito siempre copiar t.lo con libt.so o puedo usar solo libt.so? - Robert

@Robert: solo el .so Archivo. Saludos. - jxh

Gracias, última pregunta :). ¿Funcionará este archivo .so en sistemas operativos x32 y x64 como Solaris, FreeBSD, Ubuntu, CentOs sin recompilar? ¿Puedo compilarlo en el servidor Ubuntu x64 y usar el archivo .so compilado en todos los sistemas y arquitecturas anteriores? ¡Gracias! - Robert

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.