¿Por qué LFS y CLFS cambian la ruta utilizada para encontrar el linker dynamic?

Tanto LFS como CLFS aplican parches a la fuente de GCC antes de build.

Los parches CLFS son un poco más complicados que los parches LFS, pero lo que tienen en común es el cambio de la ruta utilizada para encontrar el linker dynamic. En este caso, se movió a la location donde se va a build una nueva versión de glibc.

Dado que, al less en el caso de CLFS, está creando una cadena de herramientas cruzada y, presumiblemente, no puede ejecutar nada construido con esta cadena en su máquina de compilation, ¿qué diferencia hace que los progtwigs de GCC busquen el linker dynamic? ¿No es eso una operación en time de ejecución que nunca va a suceder de todos modos? Además, si construyes un binary con este GCC, uno que requiera bibliotecas compartidas e intente ejecutarlo en tu destino, ¿no sería la ruta al linker dyanmic ahora incorrecta?

Además (C) LFS tiene que modificar el STANDARD_STARTFILE_PREFIX_X para apuntar a $INSTALL_PATH/tools/lib/ . ¿No se comprobarían esos paths presumiblemente cuando / --with-sysroot ? Después --with-sysroot GCC con --with-sysroot si compruebo --preint-search-dirs , no lo veo buscando en ninguna ruta además de las referencedas a prefix o --with-sysroot .

Las páginas que ha vinculado son para build una cadena de herramientas temporal que luego se utiliza para build el sistema final en el Capítulo 6 de LFS. El GCC en el Capítulo 6 se comstack sin ningún parche. Los parches en la cadena de herramientas temporal solo están ahí para permitir una compilation adicional de packages independientemente de las herramientas que usa el sistema host.

(C) LFS intenta build un sistema Linux con la menor cantidad de vínculos posibles con la máquina de compilation. Como resultado, algunos de los pasos pueden parecer innecesarios, networkingundantes o artificiales. Aquí está (un subset de) el process de CLFS que aborda la pregunta principal:

  1. Ch5: binutils cruzados
  2. Ch5: 1er pase cruza GCC
  3. Ch5: Glibc (que puede ser utilizado por un comstackdor cruzado y nativo del destino), se instala con el prefijo de /tools
  4. Ch5: segundo pase cruzado gcc. El parche dynamic-linker-path se aplica aquí para apuntar a /tools , que es un enlace simbólico a $CLFS/tools donde $ CLFS es la raíz del sistema de files del objective.
  5. Ch6: utilice el segundo pase cross gcc para crear un set de nuevas herramientas que serán nativas del objective, estas incluyen una versión de gcc para ejecutar en el destino. Aparentemente ausente de esta list hay otra copy de glibc. Esto no es necesario porque el que se creó anteriormente está bien por ahora.
  6. Ch10: arranque / chroot en el sistema de destino, que ahora tiene /tools en el mismo lugar que su máquina de compilation. Esto permite que las herramientas comstackdas (como nativas) anteriormente accedan al linker dynamic. Ahora harás glibc otra vez, pero esta vez irá al estándar /usr (en lugar de /tools/usr )

La raíz de la pregunta tenía que ver con la ruta del linker dynamic y el hecho de que aparece en relación con la máquina de compilation. La respuesta es básicamente que el OP (yo) no estaba pensando en cómo había un enlace simbólico entre / tools y ${CLFS}/tools y que el parche se aplicó para hacer / herramientas la ruta de acceso raíz al linker.

No tengo respuesta para la pregunta STANDARD_STARTFILE_PREFIX_X .