Desarrollo de una aplicación usando Bitbake Objetivos
Compilar una aplicación sencilla sin hacer uso de Bitbake Utilizar el entorno Bitbake para compilar una aplicación sencilla.
Requisitos
Tener instalado el entorno de desarrollo proporcionado por MultiTech. Disponer de una compilación core‐base‐image.
Compilando una aplicación sin utilizar bitbake En la primera parte de esta práctica vamos a construir una aplicación sencilla que nos ayude a obtener una visión general sobre los pasos necesarios en el proceso de compilación de una aplicación o utilidad. En primer lugar, tendremos que preparar el entorno y localizar las herramientas disponibles. 1. Configurar las variables de entorno: $ cd /home/matrix/workspace/corecdp-1.1.1 $ source env-oe.sh
2. Añadir a la variable PATH la ruta adecuada para incluir el toolchain: $ export PATH=${OETREE}/build/tmp/cross/armv5te/bin:$PATH
Para mantener una estructura ordenada crearemos un directorio de trabajo donde podremos comenzar a elaborar nuestra utilidad. 3. Crear un directorio para almacenar el código fuente y los archivos temporales: $ mkdir ejercicio1 $ cd ejercicio1
4. Crear el fichero hello.c con el siguiente contenido: #include #include int main (void){ printf ("Hello from Matrix\n"); return 0; }
Una vez configurado el entorno y preparada nuestra utilidad, podemos proceder a su compilación y testeo sobre el módulo. 5. Compilar y linkar el fichero: $ arm-corecdp-linux-gnueabi-gcc –o hello hello.c
6. Copiar el fichero sobre el módulo (por defecto el módulo estará configurado con la IP 192.168.2.1 con el usuario root y password root): $ scp hello
[email protected]:/tmp/
7. Acceder al módulo y ejecutar la aplicación: $ ssh
[email protected] $ /tmp/hello
Compilando una aplicación usando el entorno Bitbake La herramienta Bitbake nos va a permitir construir nuestro sistema a partir de aplicaciones o paquetes elementales denominados recipes. Cada uno de estos recipes puede contener uno o varios archivos que implementan una utilidad más o menos compleja. El objetivo en esta segunda parte de la práctica será la creación de un recipe que incluya la funcionalidad hello.c para que mediante el entorno Bitbake se pueda añadir de una forma automática a nuestro sistema final. 8. Crear la carpeta base del recipe: $ cd ${OETREE}/user‐collection/recipes $ mkdir hello $ cd hello 9. Volver a crear, o copiar, el fichero hello.c descrito anteriormente. 10. Crear el fichero hello_1.0.0.bb : DESCRIPTION = "Hello" SECTION = "examples" LICENSE = "GPL" SRC_URI = "file://hello.c" S = "${WORKDIR}" do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} hello.c -o hello } do_install() { install -d ${D}${bindir} install -m 0755 hello ${D}${bindir} }
Este fichero permitirá a Bitbake localizar los archivos fuentes que conforman nuestro programa, crear el/los binarios correspondientes y generar el fichero final que nos permitirá instalar la aplicación en el dispositivo. Podemos comentar el significado de alguno de los parámetros utilizados: SRC_URI especifica el/los ficheros que componen nuestra aplicación. En este ejemplo residen físicamente en el disco duro de nuestro PC de desarrollo, sin embargo en conjunto con el parámetro S puede configurarse una ruta remota a un servidor externo. Para nuestro ejemplo S toma el valor ${WORKDIR} que está asociado al path
${OETREE}/build/tmp/work/armv5te‐corecdp‐linux‐gnueabi/. El parámetro do_compile define las instrucciones necesarias para realizar la compilación de la utilidad. Si no se define ningún valor para este parámetro, se ejecutara el comando make. En la misma línea, do_install define los pasos que son necesarios para instalar correctamente nuestra utilidad. D define el directorio destino y bindir es el directorio donde comúnmente se depositan los ejecutables /usr/bin/. Para una visión más detallada, se recomienda la lectura del siguiente link: http://docs.openembedded.org/usermanual/usermanual.html#chapter_recipes 11. Ejecutar Bitbake: $ cd ${OETREE} $ bitbake hello
12. Copiar el paquete sobre el módulo $ scp build/tmp/deploy/glibc/ipk/armv5te/hello_1.0.0-r0.5_armv5te.ipk
[email protected]:/var/tmp
13. Instalar el paquete: $ ssh
[email protected] $ cd /var/tmp $ opkg install hello_1.0.0-r0.5_armv5te.ipk
14. Ejecutar la aplicación $ hello