Red de conocimiento del abogados - Preguntas y respuestas jurídicas - Cómo establecer un entorno de compilación cruzada para arm-linux

Cómo establecer un entorno de compilación cruzada para arm-linux

La razón principal para utilizar la compilación cruzada es que la mayoría de los sistemas de destino integrados no pueden proporcionar suficientes recursos para el proceso de compilación, por lo que el proyecto de compilación debe transferirse a un host de alto rendimiento.

El entorno de compilación cruzada en Linux incluye principalmente las siguientes partes:

1. El compilador gcc para el sistema de destino

2. Herramienta del sistema binutils

3. La biblioteca C estándar glibc del sistema de destino

4. El archivo de encabezado del kernel de Linux del sistema de destino

Pasos para establecer una entorno de compilación cruzada

1. Descargue el código fuente, incluidos binutils, gcc, glibc y el kernel de Linux (debe tenerse en cuenta que las versiones de glibc y el código fuente del kernel deben ser consistentes). las versiones realmente utilizadas en la máquina de destino) y establecer La variable de shell PREFIX especifica la ruta de instalación del programa ejecutable.

2. Compile binutils Primero ejecute el archivo de configuración y use el parámetro --prefix=$PREFIX para especificar la ruta de instalación, use el parámetro --target=arm-linux para especificar el tipo de máquina de destino. y luego ejecute make install.

3. Configure el archivo de encabezado del kernel de Linux

Primero ejecute make mrproper para limpiar y luego ejecute make config ARCH=arm (o make menuconfig/xconfig ARCH=arm) para configurar. (Tenga en cuenta que asegúrese de usar ARCH=arm para especificar la arquitectura de la CPU en la línea de comando, porque la arquitectura predeterminada es la arquitectura de la CPU del host. Este paso requiere una configuración detallada de acuerdo con la situación real de la máquina de destino). experimento realizado por el autor, la máquina de destino era la PDA HP. ipaq-hp3630, así que configure el tipo de sistema en SA11X0 y seleccione Compaq iPAQ H3600/H3700 en Implementaciones SA11X0.

Una vez completada la configuración, debe copiar los archivos de encabezado del kernel al directorio de instalación: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux

4. Compile gcc por primera vez

Primero ejecute el archivo de configuración, use el parámetro --prefix=$PREFIX para especificar el ruta de instalación y use --target=arm- El parámetro de Linux especifica el tipo de máquina de destino y usa los parámetros --disable-threads, --disable-shared, --enable-languages=c y luego ejecuta make install. Este paso generará un gcc minimalista. Dado que compilar todo el gcc requiere la biblioteca glibc de la máquina de destino, que aún no existe, primero debe generar un gcc más simple, que solo necesita tener la capacidad de compilar la biblioteca glibc de la máquina de destino.

5. Compilación cruzada de glibc

El código generado en este paso es para la CPU de destino, por lo que es un proceso de compilación cruzada. Este proceso requiere el archivo de encabezado del kernel de Linux. La ruta predeterminada es $PREFIX/arm-linux/sys-linux. Por lo tanto, es necesario establecer una conexión suave llamada sys-linux en $PREFIX/arm-linux para crear su archivo de encabezado del kernel. El directorio de inclusión donde se encuentra; alternativamente, también puede usar el parámetro --with-headers en el comando de configuración que se ejecutará a continuación para especificar la ruta real del archivo de encabezado del kernel de Linux.

Los parámetros de ejecución de configure se configuran de la siguiente manera (debido a que es compilación cruzada, la variable del compilador CC debe configurarse en arm-linux-gcc): CC=arm-linux-gcc ./configure - -prefix=$ PREFIX/arm-linux --host=arm-linux --enable-add-ons Finalmente, ejecute configure y realice la instalación de acuerdo con la configuración anterior. Se completa el proceso de compilación cruzada de glibc. Aquí se señala la configuración de la ruta de instalación de glibc. Es $PREFIXARCH=arm/arm-linux. Si esta configuración es incorrecta, es posible que no se encuentren los archivos de encabezado y las bibliotecas de glibc al compilar gcc por segunda vez.

6. Compile gcc por segunda vez

Ejecute configure y establezca los parámetros en --prefix=$PREFIX --target=arm-linux --enable-languages=c, c++.

Ejecute make install.

En este punto, todo el entorno de compilación cruzada se ha generado por completo.

Algunas cosas a tener en cuenta

Primero, al compilar gcc por primera vez, puede haber un error que indica que no se puede encontrar stdio.h. La solución es modificar gcc/config. /arm/t-linux, agregue -Dinhibit_libc y -D__gthr_posix_h a la configuración de la variable TARGET_LIBGCC2_CFLAGS.