Programación General > C/C++

 Compilación cruzada

<< < (2/2)

GsOiD:
Ups, lo envié sin explicar cómo he hecho el trabajo...  Esto lo hice desde un linux-ubuntu11.04  Intel   para un onjetivo: sparc  con sun-solaris2.10

LO QUE APARECE DESPUÉS DE CADA  ! ES UN COMENTARIO.

Bien, aquí les va// todo lo hago como root, esto porque puedo, y además si estoy como usuario y luego me paso a root para hacer los make install, las variables de entorno "desaparecen" los valores que les asigné, y tendría que reasignar valores y eso me dió flojera.. pero lo recomendable es no trabajar como root...


--- Citar ---a) Establecer las variables de entorno temporales, para la seción que inicie.

$ export TARGET=sparc-sun-solaris2.10       !especifico el objetivo, al tipear     $ gcc -dumpmachine     en la máquina objetivo obtuve sparc-sun-solaris2.10
$ export  PREFIX=$HOME/cross                      !aquí indico el directorio en donde surgirá la magia, el cual aún no existe
$ export SYSROOT=$PREFIX/sysroot            !aquí especifico el directorio en donde almacenaré las bibliotecas y headers del sis objetivo que se requieren...
$ export PATH=$PREFIX/bin/:$PATH

b)Crear la estructura de directorios para la compilación:  

$ mkdir $PREFIX             !crea el directorio /cross   dentro de /home/yo
$ mkdir $SYSROOT        !crea el directorio /sysroot dentro de /home/yo/sysroot

c) Copiando las bibliotecas y headers del sistema objetivo  necesarias... lo hago remotamente... dentro de sysroot

$ cd $SYSROOT               ! que equivale a        $ cd /home/yo/cross/sysroot
$ ssh tss-3-04@ce.azc.uam.mx  "tar -cf - /usr/local/include" | tar -xvf -
$ ssh tss-3-04@ce.azc.uam.mx  "tar -cf - /usr/lib" | tar -xvf -
$ ssh tss-3-04@ce.azc.uam.mx  "tar -cf - /usr/openwin/include" | tar -xvf -
$ ssh tss-3-04@ce.azc.uam.mx "tar -cf - /usr/X11/include" | tar -xvf -
$ ssh tss-3-04@ce.azc.uam.mx  "tar -cf - /usr/dt/lib" | tar -xvf -
$ ssh http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz         ! descargo binutils
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.gz     ! descargo gcc

$ tar -xvzf  binutils-2.21.tar.gz            ! descomprimo binutils-2.21.tar.gz
$ cd binutils-build                                   ! ingreso al directorio  binutils-build
$ ../binutils-2.21/configure   --target=$TARGET --prefix=$PREFIX   --disable-nls --disable-werror --with-sysroot=$SYSROOT   -v      ! configuro binutils
$ make
$ make install                                          ! instalo una vez configurado y todo

$ cd ..                                                          ! me salgo de binutils-build    y    regreso   a   /buil  
$ tar -xvzf    gcc-4.6.0.tar.gz                ! descomprimo gcc-4.6.0.tar.gz
$ cd gcc-build                                          ! ingreso a gcc-build
$ ../gcc-4.6.0/configure --target=$TARGET --prefix=$PREFIX --disable-nls --disable-shared --disable-multilib --disable-target-libiberty --disable-target-zlib --enable-languages=c --without-ppl --without-cloog --with-sysroot=$SYSROOT -v                                                                                                             ! configuro gcc
$ make
$ make install

LISTO !!!!!  

e) Probando

!  Dentro de     /home/yo/cross   guardo un programa en c ... yo probé un hola mundo... el clásico.   n__n    Lo coloqué ahí, porque ese es mi entorno de compilación... en otro lado esto no funcionará.

$  $PREFIX/bin/$TARGET-gcc hola.c -o hello      ! para compilar de forma cruzada hago eso.  No confundas $ que es el prompt de linux con el que indica que vas a usar el valor de la variable de entorno.

Ahora debes ver un ejecutable  llamado hello .... te reto a que lo ejecutes en tu sistema host.  :rolleyes:    No se puede... a mi me arrojó esto:

bash: ./hello: no se puede ejecutar el fichero binario

Entonces copié a mi máquina remota, el ejecutable, para probar si funciona ahí....

$   scp hello tss-3-04@ce.azc.uam.mx                             ! ahora ingresé a la máquina remota para ejecutar directamente el archivo que copie.    :comp:   Escribo la contraseña.
$   cd  carla                                                                   !entro al directorio donde debe estar mi archivo "hello"
$   ./hello                                                                       ! ya que lo ví, lo ejecuto.

Hola Carla, bienvenida al mundo   !!!                  ! ese fue el resultado de mi programa... así que si funciona....

Ahora estoy lista para compilar cualquier cosa que desee ejecutar en el sparc  :good:


Referencias:
1.- http://www.cis.upenn.edu/~milom/cross-compile.html
2.- http://www.escomposlinux.org/lfs-es/lfs ... pass1.html
3.- http://www.linuxfromscratch.org/lfs/vie ... pass1.html

Cualquier duda mandarme un mensaje  :hola:
--- Fin de la cita ---

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa