Introducción a los problemas de la cadena de herramientas de compilación cruzada integradas en Linux
La cadena de herramientas de compilación cruzada es un entorno de desarrollo integrado que consta de un compilador, un enlazador y un intérprete. La cadena de herramientas de compilación cruzada consta de tres partes principales: binutils, gcc y glibc. A veces, para reducir el tamaño de una biblioteca .libc, se pueden usar otras bibliotecas .c en lugar de .glibc, como .uClibc, dietlibc y .newlib. La cadena de herramientas de compilación cruzada incluye principalmente el compilador .gcc del sistema de destino, la herramienta binaria binutils del sistema de destino, la biblioteca .c estándar del sistema de destino glibc y la biblioteca .linux .gcc del sistema de destino. Archivos de encabezado del kernel de Linux para el sistema de destino. El primer paso es identificar la plataforma de destino. Cada plataforma de destino tiene un formato bien definido y esta información se utiliza para determinar las versiones correctas de las diferentes herramientas que se utilizarán durante el proceso de construcción. Por lo tanto, cuando se ejecuta GCC bajo un objetivo específico, GCC busca en la ruta del directorio la ruta de la aplicación que contiene la especificación de destino. El formato de especificación de destino de GNU es CPU-PLATFORM-OS. Por ejemplo, para crear una cadena de herramientas cruzada basada en la plataforma ARM, el nombre de la plataforma de destino es arm-linux-gnu. Cómo hacer una cadena de herramientas de compilación cruzada
Compile e instale paso a paso las bibliotecas y el código fuente necesarios para la cadena de herramientas de compilación cruzada y, finalmente, genere la cadena de herramientas de compilación cruzada.
Utilice la herramienta de secuencia de comandos Crosstool para compilar una vez y generar una cadena de herramientas de compilación cruzada.
Descargue la cadena de herramientas de compilación cruzada creada directamente desde Internet (ftp.arm.kernel.org.uk).
El método 1 es relativamente difícil y adecuado para lectores que desean aprender más sobre la construcción de cadenas entre herramientas. Si solo desea utilizar una cadena de herramientas cruzada, se recomienda utilizar el Método 2 o el Método 3 para crear una cadena de herramientas cruzada. No hace falta decir que las ventajas del método 3 son simples y sin problemas, pero al mismo tiempo, este método también tiene ciertas desventajas, es decir, es demasiado limitado, porque después de todo, fue construido por otros, es decir, no existe una solución flexible, por lo que las bibliotecas utilizadas para compilar y la versión del compilador pueden no ser adecuadas para el programa que desea compilar y pueden ocurrir muchos errores inexplicables durante el uso. Se recomienda utilizar este método con precaución.
Método 1: construir paso a paso la cadena de herramientas de compilación cruzada
Descargar el paquete de código fuente requerido
Establecer un directorio de trabajo
Establecer variables de entorno
Compilar e instalar Binutils
¿Obtener archivos de encabezado del kernel?
Compila el compilador auxiliar para gcc
Compila y genera la biblioteca glibc
Compila y genera el gcc completo
Debido a la longitud De la pregunta, no puedo. Los pasos específicos se presentan en detalle. Los estudiantes interesados deben leer el protocolo ****tronic de código abierto "Linux desde cero" URL: linuxfromscratch dot org. una cadena de herramientas cruzadas (recomendado)
Crosstool es un conjunto de herramientas de scripting para construir y probar diferentes versiones de gcc y glibc para arquitecturas habilitadas para glibc. También es un proyecto de código abierto y se puede descargar en kegel punto com/crosstool. Usar Crosstool para crear una cadena de herramientas de compilación cruzada es mucho más simple y conveniente que el método de compilación paso a paso mencionado anteriormente. Se recomienda para usuarios que solo necesitan crear una cadena de herramientas de compilación cruzada para trabajar.
Ejecute makeinfo. Si no puede encontrar el comando, descomprima texinfo-4.11.tar.bz2, vaya al directorio texinfo-4.11 y luego ejecute ./configure&&make&&make install para completar el archivo de preparación de instalación. Herramienta makeinfo:
¿Descargar los archivos de recursos necesarios? linux-2.4.20.tar.gz, binutils-2.19.tar.bz2, gcc-3.3 .6.tar.gz, glibc-2.3.2.tar.gz, glibc-linuxthreads-2.3.2.tar.gz. y gdb-6.5.tar.bz2? Luego, coloque estos archivos del kit de herramientas en el directorio $HOME/downloads recién creado y, finalmente, use el siguiente comando para descomprimir crosstool-0.43.tar.gz en el directorio $HOME/
#?cd?$HOME /
#?tar?-xvzf? crosstool-0.43.tar.gz
Archivo de script de compilación
A continuación, debe crear su propio script de compilación y llámalo arm.sh. Para simplificar el proceso de escritura de arm.sh, busque el archivo de script más cercano demo-arm.sh como plantilla, luego copie el contenido del script en arm.sh y modifique arm.sh de la siguiente manera Script: p>
# cd crosstool-0.43
# cp demo-arm.sh arm.sh
# vi arm.sh
El brazo modificado. El contenido del script sh es el siguiente: #! /bin/sh
set?-ex
TARBALLS_DIR=$HOME/downloads?#?Defina la ubicación de almacenamiento del código fuente de la cadena de herramientas.
RESULT_TOP=$HOME/arm-bin?#?Definir el directorio donde está instalada la cadena de herramientas
export?TARBALLS_DIR?RESULT_TOP
GCC_LANGUAGES="c ,c++" #?Definir soporte para lenguajes C y C++
exportar?GCC_LANGUAGES
#?Crear el directorio /opt/crosstool
mkdir?-p? $RESULT_TOP
#?Compile la cadena de herramientas, este proceso tarda varias horas en completarse.
eval?'cat?arm.dat?gcc-3.3.6-glibc-2.3.2.dat'?sh?all.sh?--notest
Echo?Listo .Compile el archivo de configuración
En el archivo de script arm.sh, debe prestar atención a los archivos arm-xscale.dat y gcc-3.3.6-glibc-2.3.2.dat, que se utilizan para compilar el archivo de configuración de Crosstool. El contenido del archivo arm.dat es el siguiente, que se utiliza principalmente para definir el archivo de configuración, definir el nombre de la cadena de herramientas de compilación generada y definir las opciones de compilación. KERNELCONFIG='pwd'/arm.config?#?Configuración del kernel
TARGET=arm-linux?#?El nombre de la cadena de herramientas generada por la compilación
TARGET_CFLAGS="-O "# ? Opciones de compilación
El archivo gcc-3.3.6-glibc-2.3.2.dat es el siguiente. Este archivo define principalmente las bibliotecas requeridas durante el proceso de compilación y la versión de la biblioteca definida. Se encuentra cierta biblioteca durante el proceso de compilación. Si estas bibliotecas no existen, la herramienta las descargará automáticamente de los sitios web relevantes. Crosstool descarga automáticamente bibliotecas de sitios web relevantes y, en este punto, es una herramienta relativamente inteligente y útil.
BINUTILS_DIR=binutils-2.19
GCC_DIR=gcc-3.3.6
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.10-8 ( Complete según sea necesario)
GDB_DIR=gdb-6.5
Ejecute el script
Después de preparar el archivo de script y el archivo de configuración de Crosstool, comience a ejecutar arm.sh script para compilar herramientas de compilación cruzada. El comando exacto a ejecutar es el siguiente: #?cd?crosstool-0.43
#?/arm.sh
Después de varias horas de compilación, está disponible una nueva herramienta de compilación cruzada en el directorio /opt /crosstool, incluido el siguiente contenido: arm-linux-addr2line?arm-linux-g++arm-linux-ld?arm-linux-size
arm-linux-ararm-linux - gcc?arm-linux-nm?arm-linux-strings
arm-linux-asarm-linux-gcc-3.3.6?arm-linux-objcopy?arm-linux-strip
arm-linux-c++?arm-linux-gccbug?arm-linux-objdump?arreglar-rutas-integradas
arm-linux-c++filt?arm-linux-gcov?arm- linux - ranlib
arm-linux-cpp?arm-linux-gprofarm-linux-readelfAgregar variable de entorno
Luego agregue la ruta de la cadena de herramientas de compilación generada a la variable de entorno PATH, El método para agregar es agregar la siguiente línea al archivo bashrc al final del archivo system/etc/bashrc para agregar la variable de entorno
export PATH=/home/jiabing/gcc-3.3.6 -glibc-2.3.2/ arm-linux-bin/bin:$PATH
En este punto, la cadena de herramientas de compilación cruzada en arm-linux se ha completado. Ahora puede usar arm-linux-. ¡gcc para generar programas en el cuadro de prueba!