¿Cómo compilar mi propia biblioteca estándar glibc C desde la fuente y usarla?

3 minutos de lectura

avatar de usuario
pitónico

Estoy tratando de compilar mi propia glibc. tengo un directorio glibcque contienen la glibc código fuente que descargué de internet. Desde ese directorio escribí mkdir ../build-glibc. ahora desde el build-glibc directorio que escribí ../glibc/configure, que realizó la configuración. Ahora no estoy seguro de cómo llamar make. no puedo llamarlo desde glibc directorio ya que no tiene la configuración establecida, ni puedo llamarlo desde build-glibc, ya que makefile no está en ese directorio. ¿Cómo soluciono este problema?

  • Leíste gnu.org/software/libc/manual/html_mono/libc.html#Instalación ?

    – fvu

    2 de mayo de 2012 a las 11:23

  • Sí, lo leí, solo dice call make, pero mi pregunta es ¿desde dónde debo llamar a make y cómo? No puedo llamarlo desde el directorio de compilación y tampoco desde el directorio glibc porque no se llamó a configure desde allí.

    – pitónico

    2 de mayo de 2012 a las 11:28


  • Correr make desde el directorio que contiene el archivo make.

    –David Schwartz

    2 mayo 2012 a las 11:30

  • Lo intenté, no funciona, dice lo siguiente. La biblioteca GNU C no se ha configurado. Correr configure' to configure it before building. Try configure –help’ para más detalles. make: No se pudo rehacer makefile `sysdeps/../config.make’. Y si trato de llamar a ./configure desde el mismo directorio, dice usar un directorio de compilación separado.

    – pitónico

    2 mayo 2012 a las 11:35


  • Entonces aparentemente configure ha fallado. ¿Produjo un mensaje de error?

    – Fred Foo

    2 mayo 2012 a las 11:37

  • ¿Es esta la respuesta más larga en SO?

    – Nick camello

    27 de junio de 2019 a las 9:18

  • @niCkcAMel estas son probablemente mis respuestas más largas (que requieren mucho trabajo) hasta ahora: stackoverflow.com/questions/18431261/how-does-x86-paging-work | stackoverflow.com/questions/22054578/… | stackoverflow.com/questions/26294034/…

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

    27 de junio de 2019 a las 10:14

  • Hola @CiroSantilli郝海东冠状病六四事件法轮功 ¿Hay glibc incluido en gcc-9.3? gcc.gnu.org/gcc-9?

    – calvin

    13 de noviembre de 2020 a las 7:18

  • @calvin No tengo ganas de tales cambios, así que AFAIK no.

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

    13 de noviembre de 2020 a las 8:30


  • @CiroSantilliTRUMPBANISBAD Editar su respuesta devuelve “La cola de edición sugerida está llena”. El script ldd que está llamando en test_glibc.sh apunta al enlazador dinámico del host: “/home/ciro/glibc/build/install/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux- x86-64.so.2 (0x00007fc12f1b3000)”. Para arreglar esto, en test_glibc.sh, cambie “ldd” a “${glibc_install}/bin/ldd”. Esto requerirá que agregue los archivos crt*.o creados también al script: -nostartfiles \ ${glibc_install}/lib/crti.o \ ${glibc_install}/lib/crtn.o \ ${glibc_install}/lib /crt1.o \ Ver mi respuesta: stackoverflow.com/a/66634184/4726668

    – ZeZNiQ

    15 de marzo de 2021 a las 7:54


  • Gracias por esta sugerencia, se ve interesante. Cuando lo probé en Ubuntu 20.10 glibc 2.32 obtuve errores ${glibc_install}/bin/ldd ./test_glibc.out da not a dynamic executable y ./test_glibc.out da ./test_glibc.out: No such file or directory. No me detuve a investigar más.

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

    15 de marzo de 2021 a las 11:46

  • @Ciro A primera vista, el error “no existe tal archivo o directorio” me dice que probablemente copió y pegó el script tal como está, que se probó en 32 bits, y lo probó en su máquina de arco de 64 bits. Tenga en cuenta que el enlazador dinámico es diferente para 32 bits y 64 bits. Es por eso que hice una nota allí en la configuración de mi máquina, “Máquina GNU/Linux i386/i686”, que es un arco de 32 bits.

    – ZeZNiQ

    15 de marzo de 2021 a las 19:19


  • Ops, sí, ahora lo arreglé y ./test_glibc.out trabajó. Pero el ${glibc_install}/bin/ldd ./test_glibc.out todavía falló por alguna razón.

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

    15/03/2021 a las 19:55

  • ¿Quizás la variable “RTLDLIST” en ese script ldd apunta al enlazador dinámico incorrecto?

    – ZeZNiQ

    15 de marzo de 2021 a las 23:06

¿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