¿Cómo vincular a un archivo libc diferente?

2 minutos de lectura

¿Como vincular a un archivo libc diferente
Neeladri Vishweswaran

Quiero suministrar las bibliotecas compartidas junto con mi programa en lugar de usar el sistema de destino debido a las diferencias de versión.

ldd dice que mi programa usa estas librerías compartidas:

linux-gate.so.1 =>  (0xf7ef0000)**(made by kernel)**  
libc.so.6 => /lib32/libc.so.6 (0xf7d88000)**(libc-2.7.so)**  
/lib/ld-linux.so.2 (0xf7ef1000)**(ld-2.7.so)**

He vinculado con éxito ld-xxx.so compilando con:

gcc -std=c99 -D_POSIX_C_SOURCE=200112L -O2 -m32 -s -Wl,-dynamic-linker,ld-2.7.so myprogram.c

Pero no he logrado vincular con éxito libc-xxx.so. Cómo puedo hacer eso ?

  • Es posible que desee considerar vincular estáticamente su programa si solo tiene un ejecutable. De esta manera, nadie perderá accidentalmente su versión de libc y, si eliminan su programa, no tendrán su libc persistente.

    – ganso nate

    28 de abril de 2010 a las 17:26

  • Igual pero estáticamente: stackoverflow.com/questions/10763394/…

    – Ciro Santilli Путлер Капут 六四事

    8 jun 2015 a las 20:14

¿Como vincular a un archivo libc diferente
Neeladri Vishweswaran

Descubrí cómo hacerlo:

rpath especifica dónde se encuentran las bibliotecas proporcionadas. Esta carpeta debe contener: libc.so.6, libdl.so.2, libgcc_s.so.1 y tal vez más Verifique con strace para averiguar qué bibliotecas usa su archivo binario.

ld.so es el enlazador proporcionado

gcc -Xlinker -rpath=/default/path/to/libraries -Xlinker -I/default/path/to/libraries/ld.so program.c

  • ¿Sabes cómo agregar símbolos de depuración de libc también?

    – Dopaz

    1 de febrero a las 17:07

Paso -nodefaultlibs o -nostdlib to gcc le indicará que no pase las bibliotecas predeterminadas como argumentos a ld. Luego podrá especificar explícitamente la libc con la que desea vincular. Ver el gcc(1) man page para obtener más detalles y advertencias sobre ambas opciones.

  • Tenga en cuenta que esta publicación es incorrecta. No necesita pasar ninguna de esas 2 banderas.

    – Neeladri Vishweswaran

    30 de abril de 2011 a las 12:46

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad