Tengo algunos conocimientos básicos sobre la compilación de C pero necesito obtener un par de preguntas genéricas de compilación cruzada. En mi caso, estoy tratando de compilar de forma cruzada un programa en mi caja de Fedora Linux que se ejecutará en una computadora de una sola placa ARM.Requerimientos de compilación cruzada para C
Mi primera pregunta es sobre los encabezados. He descargado el paquete de herramientas de herramientas de Linux y contiene archivos de encabezados como stdio.h en un directorio de inclusión. ¿Se supone que debo usar este directorio de inclusión "objetivo" en lugar de incluir directorios de mi sistema cuando estoy compilando de forma cruzada? ¿O está bien apuntar a los directorios de inclusión de mi sistema como/usr/include? (Estos archivos de encabezado parecen ser diferentes cuando los diferencio).
¿Qué sucede si no existe un archivo de encabezado? En mi caso, también estoy planeando utilizar la biblioteca cURL en el tablero ARM. ¿Puedo simplemente señalar el directorio de inclusión presente en el paquete fuente curl que descargué sin preocuparme por la arquitectura objetivo? En caso afirmativo, ¿significa esto que mi primera pregunta es irrelevante?
Digamos que quiero vincular estáticamente a una biblioteca. ¿Es necesario compilar esta biblioteca estática para la plataforma de ARM objetivo antes de que esto suceda? ¿O puedo usar las bibliotecas estáticas instaladas en mi sistema directamente (con la esperanza de que el proceso de compilación cruzada se encargue del negocio)?
Si decido vincular dinámicamente a una biblioteca, el único requisito sería que el sistema objetivo tenga esta biblioteca compilada para ARM e instalada en uno de los directorios LD_LIBRARY_PATH en la placa ARM, ¿estoy en lo correcto?
Gracias por la ayuda.
Para ampliar el punto 1: el medio ambiente compilador cruzado ya debe estar configurado para que un #include 'referencias al descubierto la versión' brazo de la cabecera (es decir, se debe buscar en otro lugar que '/ usr./include'). –
caf
¿Puede explicar el segundo tema? Estoy particularmente confundido acerca del "Como también necesitas una biblioteca cURL, DEBES usar el compilador cruzado". frase. ¿Ya cubriste este paso en tu primera oración? – Burak
@Burak: es muy poco probable que el compilador de cruce ARM se envíe con cURL. Si no es así, debe crear un mini "sistema de archivos raíz" para permitir que las compilaciones y los enlaces funcionen.Existe una razón por la que existen frameworks como buildroot y OpenEmbedded: la compilación cruzada puede ser un problema –