GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo agregar mi propio software a un paquete Buildroot Linux?

En general, las fuentes de los paquetes buildroot se toman de un tarball (descargado). Lo que está haciendo en este momento (colocar las fuentes dentro del paquete/HelloWorld) no es la forma correcta de proceder.

Buildroot tiene provisiones para fuentes de paquetes 'locales', que podría usar si realmente lo necesita. Necesitarás la variable HELLOWORLD_SITE_METHOD para eso.

Consulte http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages para obtener más información.

Además, no necesita definir HELLOWORLD_DIR, HELLOWORLD_BINARY, HELLOWORLD_TARGET_BINARY.

Actualización:con respecto a su pregunta adicional:

ACTUALIZACIÓN:El programa se compila e instala en la ubicación deseada, pero cuando trato de ejecutarlo así:./helloworld, obtengo:bash:./helloworld:No existe tal archivo o directorio, tiene derechos de ejecución... ¿qué le pasa? ? (Trato de ejecutarlo después de montar therootfs.ext2 en un directorio de ubuntu, el arco de destino para buildroot es i368, por lo que debería estar bien, ¿verdad?)

No, no funciona así. No puede simplemente montar rootfs.ext2 y esperar ejecutar programas desde él. Esto se debe, entre otras cosas, a que los programas dentro de rootfs.ext2 se compilan contra las bibliotecas también dentro de rootfs.ext2, pero si lo ejecuta así, usará las bibliotecas en /usr/lib. Tiene que iniciar su sistema por completo con rootfs.ext2, usar qemu o usar un entorno chroot. Para chroot, debe usar el formato de sistema de archivos 'tar', no ext2. Consulte también aquí:http://buildroot.uclibc.org/downloads/manual/manual.html#_chroot


Ejemplo mínimo probado además de 2016.05

Upstream de GitHub:https://github.com/cirosantilli/buildroot/tree/in-tree-package-2016.05

Este ejemplo agrega la fuente del paquete en el árbol, que es simple para fines educativos y el camino a seguir si desea volver a fusionarse (¡felicitaciones!),

Si no tiene la intención de volver a fusionarse (¡booooh!), es más probable que desee usar Buildroot como un submódulo de git y:

  • un paquete fuera del árbol con BR2_EXTERNAL como se muestra en:https://github.com/cirosantilli/buildroot/tree/out-of-tree-2016.05
  • *_OVERRIDE_SRCDIR + otros submódulos de git como se explica en:¿Cómo modificar la fuente de los paquetes Buildroot para el desarrollo de paquetes?

Archivos modificados:

paquete/Config.in

menu "Misc"
    source "package/hello/Config.in"
endmenu

paquete/hola/Config.in

config BR2_PACKAGE_HELLO
    bool "hello"
    help
        Hello world package.

        http://example.com

paquete/hola/hola.mk

################################################################################
#
# hello
#
################################################################################

HELLO_VERSION = 1.0
HELLO_SITE = ./package/hello/src
HELLO_SITE_METHOD = local

define HELLO_BUILD_CMDS
    $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D)
endef

define HELLO_INSTALL_TARGET_CMDS
    $(INSTALL) -D -m 0755 $(@D)/hello $(TARGET_DIR)/usr/bin
endef

$(eval $(generic-package))

paquete/hola/src/.gitignore

hello

paquete/hola/src/Makefile

CC = gcc

.PHONY: clean

hello: hello.c
    $(CC) -o '[email protected]' '$<'

clean:
    rm hello

paquete/hola/src/hola.c

#include <stdio.h>

int main(void) {
    puts("hello");
}

Uso:

make qemu_x86_64_defconfig
echo 'BR2_PACKAGE_HELLO=y' >> .config
make BR2_JLEVEL=2
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user

Desde dentro de qemu:

hello

Salida esperada:

hello

Probado en Ubuntu 16.04.


Linux
  1. Cómo agregar una impresora en Linux Mint 12 | Agregar impresora en Linux Mint

  2. Cómo verificar los detalles de un paquete de software en Ubuntu Linux

  3. Cómo probar un paquete sin instalarlo en Linux

  4. Cómo agregar un usuario a un grupo en Linux

  5. ¿Cómo agregar Chromedriver a PATH en Linux?

Cómo agregar un usuario a un grupo en Linux

Cómo instalar software desde la fuente en Linux

Cómo agregar una ruta en Linux

Linux:¿cómo instalar X11 en el propio sistema Linux Buildroot?

Cómo agregar un usuario a un grupo en Linux

Cómo agregar un usuario a un grupo de Linux