Cómo compilar LD_PRELOAD para la mayoría de los sistemas
Frecuentes
Visto 1,292 equipos
1
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!
1 Respuestas
2
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
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ gcc compilation g++ ld-preload or haz tu propia pregunta.
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. - jxhGracias por tu respuesta. ¿Necesito siempre copiar t.lo con libt.so o puedo usar solo libt.so? - Robert
@Robert: solo el
.so
Archivo. Saludos. - jxhGracias, ú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