Red de conocimiento informático - Conocimiento del nombre de dominio - Después de configurar el entorno de compilación cruzada, Root no puede iniciar sesión en Linux.

Después de configurar el entorno de compilación cruzada, Root no puede iniciar sesión en Linux.

¿Está creando un entorno de compilación cruzada?

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

[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

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;

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

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>

[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)

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)

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.