Obecně platí, že zdroje pro balíčky buildroot jsou převzaty ze (staženého) tarballu. To, co právě děláte (umístění zdrojů do balíčku/HelloWorld), není správný způsob, jak pokračovat.
Buildroot má ustanovení pro „lokální“ zdroje balíčků, které můžete použít, pokud opravdu potřebujete. K tomu budete potřebovat proměnnou HELLOWORLD_SITE_METHOD.
Další informace naleznete na adrese http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages.
Také nemusíte definovat HELLOWORLD_DIR, HELLOWORLD_BINARY, HELLOWORLD_TARGET_BINARY.
Aktualizace:týkající se vaší další otázky:
AKTUALIZACE:Program se sestaví a nainstaluje na požadované místo, ale když se ho pokusím spustit takto:./helloworld, dostanu:bash:./helloworld:Žádný takový soubor nebo adresář, má spouštěcí práva.. co je s ním ? (Zkouším to spustit poté, co připojím therootfs.ext2 do adresáře ubuntu, cílový arch pro buildroot je i368, takže by to mělo být v pořádku, ne?)
Ne, takhle to nefunguje. Nemůžete jen připojit rootfs.ext2 a očekávat, že z něj budete spouštět programy. To je mimo jiné proto, že programy uvnitř rootfs.ext2 jsou kompilovány proti knihovnám také uvnitř rootfs.ext2, ale pokud jej spustíte takto, bude používat knihovny v /usr/lib. Buď musíte celý systém zavést pomocí rootfs.ext2, použít qemu nebo použít prostředí chroot. Pro chroot byste měli použít formát souborového systému 'tar', nikoli ext2. Viz také zde:http://buildroot.uclibc.org/downloads/manual/manual.html#_chroot
Minimálně testovaný příklad oproti 2016.05
Upstream GitHub:https://github.com/cirosantilli/buildroot/tree/in-tree-package-2016.05
Tento příklad přidává zdrojový kód balíčků do stromu, což je jednoduché pro vzdělávací účely a způsob, jak jít, pokud se chcete sloučit zpět (sláva!),
Pokud nemáte v úmyslu zpětné sloučení (booooh!), je pravděpodobnější, že budete chtít použít Buildroot jako submodul git a buď:
- balíček mimo strom s
BR2_EXTERNAL
jak je uvedeno na:https://github.com/cirosantilli/buildroot/tree/out-of-tree-2016.05 *_OVERRIDE_SRCDIR
+ další submoduly git, jak je vysvětleno v:Jak upravit zdroj balíčků Buildroot pro vývoj balíčků?
Upravené soubory:
package/Config.in
menu "Misc"
source "package/hello/Config.in"
endmenu
package/hello/Config.in
config BR2_PACKAGE_HELLO
bool "hello"
help
Hello world package.
http://example.com
package/hello/hello.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))
package/hello/src/.gitignore
hello
package/hello/src/Makefile
CC = gcc
.PHONY: clean
hello: hello.c
$(CC) -o '[email protected]' '$<'
clean:
rm hello
package/hello/src/hello.c
#include <stdio.h>
int main(void) {
puts("hello");
}
Použití:
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
Zevnitř qemu:
hello
Očekávaný výstup:
hello
Testováno v Ubuntu 16.04.