GNU/Linux >> Linux Esercitazione >  >> Linux

Come aggiungere il mio software a un pacchetto Buildroot Linux?

In generale, i sorgenti per i pacchetti buildroot sono presi da un tarball (scaricato). Quello che stai facendo in questo momento (inserire i sorgenti all'interno di package/HelloWorld) non è il modo giusto di procedere.

Buildroot ha disposizioni per le fonti dei pacchetti "locali", che potresti usare se ne hai davvero bisogno. Avrai bisogno della variabile HELLOWORLD_SITE_METHOD per questo.

Per ulteriori informazioni, fai riferimento a http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages.

Inoltre, non è necessario definire HELLOWORLD_DIR, HELLOWORLD_BINARY, HELLOWORLD_TARGET_BINARY.

Aggiornamento:in merito alla tua domanda aggiuntiva:

AGGIORNAMENTO:Il programma viene compilato e installato nella posizione desiderata, ma quando provo a eseguirlo in questo modo:./helloworld, ottengo:bash:./helloworld:Nessun file o directory di questo tipo, ha i diritti di esecuzione .. qual è il problema con esso ? (Provo a eseguirlo dopo aver montato therootfs.ext2 in una directory Ubuntu, l'arco di destinazione per buildroot è i368, quindi dovrebbe essere ok, giusto?)

No, non funziona così. Non puoi semplicemente montare rootfs.ext2 e aspettarti di eseguire programmi da esso. Questo è, tra l'altro, perché i programmi all'interno di rootfs.ext2 sono compilati contro le librerie anche all'interno di rootfs.ext2, ma se lo esegui in questo modo utilizzerà le librerie in /usr/lib. Devi avviare il tuo sistema interamente con rootfs.ext2, usare qemu o usare un ambiente chroot. Per chroot, dovresti usare il formato del filesystem 'tar', non ext2. Vedi anche qui:http://buildroot.uclibc.org/downloads/manual/manual.html#_chroot


Esempio minimo testato sopra 2016.05

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

Questo esempio aggiunge l'origine del pacchetto nell'albero, che è semplice per scopi didattici e la strada da percorrere se vuoi unire di nuovo (complimenti!),

Se non intendi eseguire il merge (booooh!), è più probabile che tu voglia utilizzare Buildroot come sottomodulo git e:

  • un pacchetto fuori dall'albero con BR2_EXTERNAL come mostrato in:https://github.com/cirosantilli/buildroot/tree/out-of-tree-2016.05
  • *_OVERRIDE_SRCDIR + altri sottomoduli git come spiegato in:Come modificare l'origine dei pacchetti Buildroot per lo sviluppo dei pacchetti?

File modificati:

pacchetto/Config.in

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

pacchetto/ciao/Config.in

config BR2_PACKAGE_HELLO
    bool "hello"
    help
        Hello world package.

        http://example.com

pacchetto/ciao/ciao.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))

pacchetto/ciao/src/.gitignore

hello

pacchetto/ciao/src/Makefile

CC = gcc

.PHONY: clean

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

clean:
    rm hello

pacchetto/ciao/src/ciao.c

#include <stdio.h>

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

Utilizzo:

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

Dall'interno di qemu:

hello

Output previsto:

hello

Testato in Ubuntu 16.04.


Linux
  1. Come aggiungere una stampante in Linux Mint 12 | Aggiungi stampante in Linux Mint

  2. Come controllare i dettagli di un pacchetto software in Ubuntu Linux

  3. Linux – In che modo Mono è magico?

  4. Come aggiungere spazio di swap in Linux

  5. Come aggiungere Chromedriver a PATH in Linux?

Come aggiungere un utente al gruppo in Linux

Come installare il software dal sorgente in Linux

Come aggiungere route su Linux

Linux:come installare X11 sul proprio sistema Linux Buildroot?

Come aggiungere un utente al gruppo su Linux

Come aggiungere un utente a un gruppo Linux