Después de configurar el entorno de compilación cruzada, Root no puede iniciar sesión en Linux.
Solo vi que copiaste un montón de paquetes de software a tmp, los descomprimiste e instalaste un compilador. Parece que no los instalaste, compilaste ni instalaste.
Ya que estás usando el argumento -v de tar, echa un vistazo al mensaje. ¿Informó algún error?
Utilicé el método de configuración del entorno de compilación cruzada c para armar, puede consultarlo
Paquete de instalación:
linux-2.6.9.tar. gz
binutils-2.15.tar.gz
gcc-core-3.4.2.tar.bz2
gcc-g 3.4.2.tar.bz2
p>glibc-2.3.5.tar.gz
glibc-linuxthreads-2.3.5.tar.bz2
Compilar cuando esté listo
[root@binnary ~ ]# mkdir /armtools
[root@binnary ~ ]#mkdir -p ~/tars/sourcedir
[root@binnary ~ ]#mkdir ~/ tars/builddir
~/tars/ El directorio temporal sourcedir almacena archivos fuente y archivos fuente extraídos. ~/tars/builddir es donde se lleva a cabo la compilación.
/armtools Instale el entorno de compilación cruzada arm-linux aquí.
Primero instale binutils
[root@binnary ~ ]# cd ~/tars/sourcedir
[root@binnary sourcedir]# tar -zxf binutils-2.15 .tar.gz
[root @binnary sourcedir]# cd ~/tars/builddir
[root@binnary builddir ]# mkdir binutils
[root@ binnary builddir ]# cd binutils
[ root@binnary binutils ]# .../.../sourcedir/binutils-2.15/configure --target=arm-linux --prefix=/armtools p>
[root@binnary binutils ]# make
[root@binnary binutils ]# make install
Este proceso de compilación es muy lento y tarda decenas de minutos. la instalación se ha completado Verifique los archivos en el directorio /armtools/bin
[root@binnary binutils]# export PATH=/armtools/bin:$PATH
Luego descomprímalo , configure y copie el archivo de encabezado
[root@binnary binutils ]# cd ~/tars/sourcedir
[root@binnary sourcedir ]# tar -zxvf linux-2.6.9. tar.gz
[root@binnary sourcedir ]# cd linux-2.6.9
[root@binnary linux-2.6.9 ]# vi Makefile
Modificar
ARCH ?= $(SUBARCH)
Cambiar $(SUBARCH) para armar
#CROSS_COMPILE ? = (comentado) y agregar una nueva línea p>
CROSS_COMPILE ? = arm-linux-
[root@binnary linux-2.6.9 ]# make menuconfig
Entonces la secuencia de configuración es la siguiente (correspondo a el s3c2440 en la placa de desarrollo, puede elegir cuál sea su placa)
Tipo de sistema ---gt;
Tipo de sistema ARM (Samsung S3C2410) ---gt; p>
Implementación de S3C24XX---gt;\S3C2410 (Tipo de sistema-gt; Tipo de sistema ARM-gt;/Samsung S3C2410)
[root@binnary linux-2.6.9]# make include /linux /version.h
[root@binnary linux-2.6.9 ]# mkdir -p /armtools/arm-linux/ include
[root@binnary linux-2.6. 9 ] # cp -dR incluir/asm
-arm /armtools/arm-linux/include/asm
[root@binnary linux-2.6.9 ]# cp -dR include/linux /armtools/arm-linux/include/linux
[root@binnary linux-2.6.9 ]# cp -dR ~/tars/sourcedir/linux-2.6.9/include/asm-generic /armtools/arm-linux/include/
Luego baja y compila gcc-3.4.2
[root@binnary linux-2.6.9 ]# cd ~/tars/sourcedir
[root@binnary sourcedir ]# tar - jvxf gcc -core-3.4.2.tar.bz2
Para parchear gcc, edite el archivo flow.c.diff en el directorio gcc-3.4.2/gcc/ y agregue el siguiente contenido p >
Archivo RCS:
Recuperando revisión 1.593
Recuperando revisión 1.594
diff -u -r1.593 -r1.594
--- gcc/gcc/flow.c 2004/07/09 03:29:32 1.593
gcc/gcc/flow.c 2004/08/02 13:19:39 1.594
p>@@ -1865, 19 1865, 22 @@
rtx set_src = SET_SRC (pc_set (BB_END (bb)));
rtx cond_true = XEXP (set_src, 0);
rtx reg = XEXP (cond_true, 0);
enum rtx_code inv_cond
if (GET_CODE (reg) == SUBREG)
reg = SUBREG_REG (reg);
/* Solo podemos realizar un seguimiento del ciclo de vida de la condición si la condición aparece como un valor de comparación.
- si (REG_P (reg)
en si (REG_P (reg)
- si (REG_P (reg)
a Una forma de comparación reversible de un registro con 0.
inv_cond = código_comparación_inverso (cond_true, BB_END (bb));
if (inv_cond != DESCONOCIDO
amp; amp; REG_P (reg)
amp; (cond_true)),
= gen_rtx_fmt_ee (inv_cond,
GET_MODE (cond_true),
XEXP (cond_true, 0)),
XEXP (cond_true, 1));
if (GET_CODE (XEXP (set_src, 1)) == PC)
Utilice este archivo para parchear el flujo .c, o siga este archivo Modifique flow.c directamente (haga una copia de seguridad de los dos archivos antes de modificarlos), flow.c.diff Este parche se utiliza para generar archivos crti.o y crtn.o.
[root@binnary gcc ]# parche flow.c -p1 lt .../.../flow.c.diff [root@binnary gcc ]# cd ~/tars/builddir p>
p>
[root@binnary builddir ]# mkdir gcc-core
[root@binnary builddir ]# cd gcc-core
[root@binnary gcc-core ]# .../.../sourcedir/gcc-3.4.2/configure --target=arm-linux --prefix=/armtools--enable-languages=c--disable-shared--disable -threads-- without - headers--with-newlib
-enable-languages=c indica que solo se admite el lenguaje C, --disable-threads indica que los subprocesos están deshabilitados, lo que requiere soporte de glibc. --disable-shared significa solo compilar bibliotecas estáticas y no admite la compilación de bibliotecas ***enjoy.
A continuación, utilice el siguiente comando para realizar operaciones de compilación e instalación:
[root@binnary gcc-core]# make
[root@binnary gcc- core ]# make install
Luego compila e instala glibc
[ root@binnary gcc-core ]# cd ~/tars/sourcedir
[root@binnary sourcedir ]# tar -zxvf glibc-2.3.5.tar.gz
[root@binnary sourcedir ]# cd glibc-2.3.5
[root@binnary glibc-2.3. 5 ]# tar -jxvf ./glibc-linuxthreads-2.3.5.tar.gz
Luego compila y configura glibc-2.3.5. Debes crear un nuevo directorio de compilación antes de configurar glibc-2.3.5. , de lo contrario no se permitirán operaciones de configuración en el directorio glibc-2.3.5.
5 Cree un directorio llamado glibc debajo del directorio y configúrelo de acuerdo con los siguientes pasos:
[root@binnary glibc-2.3.5 ]# cd ~/tars/builddir
[ root@binnary builddir ]# mkdir glibc
[root@binnary builddir ]# cd glibc
[root@binnary glibc ]# vi ~/tars/sourcedir/glibc2.3.5/sysdeps /unix/sysv/linux/arm/ioperm.c
Reemplace BUS_ISA con CTL_BUS_ISA
98 static int
99 init_iosys (void) p>
100 {
101 tipo de sistema char[256];
102 int i, n;
106
107); if (! sysctl (iobase_name, 3, & io.io_base, & len, NULL, 0)
108 & ! sysctl (ioshift_name, 3, & io.shift , amp; len, NULL, 0 ))
109 {
110 io.initdone = 1;
111 devuelve 0; p>[root@ binnary glibc ]# vi ~/tars/sourcedir/glibc-2.3.5/Makeconfig
Elimina todo -lgcc_eh
505 ifneq ($(have- según sea necesario), sí)
506 libgcc_eh := -lgcc_eh $(libunwind)
507 else
508 libgcc_eh := -Wl, --as -necesario -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl, --no-según sea necesario
509 endif
510 gnulib : = -lgcc $(libgcc_eh) p>
511 static-gnulib := -lgcc -lgcc_eh $(libunwind)
512 libc.so-gnulib := -lgcc
513 endif
[root@binnary glibc ]# export CC=arm-linux-gcc
[root@binnary glibc ]# ~/tars/sourcedir/glibc-2.3/ configure \
<. p> --prefix=/armtools/arm-linux \ --host=arm-linux \ --build=i686-pc-linux-gnu \ --with-headers=/armtools /arm-linux/ include \ -- enable-add-ons=linuxthreads>
Una vez completada la configuración, compila e instala glibc
[root@binnary glibc ]# make
[root@binnary glibc ]# make install
Finalmente, compila e instala el compilador c, c de gcc.
[root@binnary glibc ]# cd ~/tars/sourcedir/
[root@binnary sourcedir ]# tar -jxf gcc-g -3.4.2.tar.bz2 [ root@binnary sourcedir ]# cd ~/tars/builddir/
[root@binnary builddir ]# mkdir gcc
[root@binnary builddir ]# cd gcc
[root@binnary gcc ]# unset CC
[root@binnary gcc ]# .../.../sourcedir/gcc-3.4.2/configure \
--prefix= /armtools\ --target=arm-linux \ --enable-languages=c,c \ -- without-headers \ --disable-shared
[root@binnary gcc ]# make
[root@binnary gcc]# make install
Eso es todo.
Para probar esto, vaya a /armtools/bin y escriba un programa en C
Por ejemplo, #cd /armtools/bin
#vim c1.c
Después de escribir, #gcc -Wall -o c1 c1.c
Si llamaste a math.h al escribir c1.c, el comando anterior se convertirá en
p>
[root@binnary gcc]# make install
Eso es todo. El comando anterior se convierte en
#gcc -Wall -o -lm c1 c1.c
Después de completar #file c1.c
, ejecute #file c1
Compare estos dos archivos
Encontrará que uno es un archivo basado en ASC-II y el otro es un archivo basado en ARM
Esto significa que usted El programa ha sido construido con éxito.
Finalmente, puedes convertir tu /armtools en un paquete de software y guardarlo para usarlo más adelante.
Hay muchos enlaces de compilación en el medio, lo que lleva mucho tiempo si todo funciona. Bueno, hazlo durante unas dos horas. Hay que tener paciencia
Por último, espero que te ayude.