GNU/Linux >> Znalost Linux >  >> Linux

Jak přidat svůj vlastní software do balíčku Buildroot Linux?

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.


Linux
  1. Jak přidat tiskárnu v Linux Mint 12 | Přidejte tiskárnu v Linux Mintu

  2. Jak otestovat balíček bez jeho instalace v Linuxu

  3. Jak přidat linuxové softwarové úložiště společnosti Microsoft

  1. Jak zkontrolovat podrobnosti softwarového balíčku v Ubuntu Linux

  2. Jak vytvořit balíček RPM pro Linux

  3. Jak přidat Chromedriver do PATH v linuxu?

  1. Jak přidat uživatele do skupiny v Linuxu

  2. Linux – jak je Mono magické?

  3. Jak přidat odkládací prostor v linuxu