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.