GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie füge ich meine eigene Software zu einem Buildroot-Linux-Paket hinzu?

Im Allgemeinen werden die Quellen für buildroot-Pakete einem (heruntergeladenen) Tarball entnommen. Was Sie gerade tun (Platzieren der Quellen in Paket/HelloWorld), ist nicht der richtige Weg, um fortzufahren.

Buildroot hat Vorkehrungen für "lokale" Paketquellen, die Sie verwenden könnten, wenn Sie es wirklich brauchen. Dafür benötigen Sie die Variable HELLOWORLD_SITE_METHOD.

Weitere Informationen finden Sie unter http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages.

Außerdem müssen Sie HELLOWORLD_DIR, HELLOWORLD_BINARY, HELLOWORLD_TARGET_BINARY nicht definieren.

Update:bezüglich Ihrer Zusatzfrage:

UPDATE:Das Programm wird am gewünschten Ort erstellt und installiert, aber wenn ich versuche, es wie folgt auszuführen:./helloworld, erhalte ich:bash:./helloworld:Keine solche Datei oder kein solches Verzeichnis, es hat Ausführungsrechte.. was ist los damit ? (Ich versuche es auszuführen, nachdem ich therootfs.ext2 in ein Ubuntu-Verzeichnis gemountet habe, der Ziel-Arch für buildroot ist i368, also sollte es in Ordnung sein, oder?)

Nein, so geht das nicht. Sie können nicht einfach rootfs.ext2 mounten und erwarten, Programme davon auszuführen. Dies liegt unter anderem daran, dass die Programme in rootfs.ext2 gegen die Bibliotheken auch in rootfs.ext2 kompiliert werden, aber wenn Sie es so ausführen, werden die Bibliotheken in /usr/lib verwendet. Sie müssen Ihr System entweder vollständig mit rootfs.ext2 booten, qemu verwenden oder eine Chroot-Umgebung verwenden. Für Chroot sollten Sie das 'tar'-Dateisystemformat verwenden, nicht ext2. Siehe auch hier:http://buildroot.uclibc.org/downloads/manual/manual.html#_chroot


Minimal getestetes Beispiel auf 2016.05

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

Dieses Beispiel fügt die Paketquelle in den Baum ein, was für Bildungszwecke einfach ist und der richtige Weg ist, wenn Sie wieder zusammenführen möchten (Kudos!),

Wenn Sie nicht beabsichtigen, wieder zusammenzuführen (booooh!), ist es wahrscheinlicher, dass Sie Buildroot als Git-Submodul verwenden möchten und entweder:

  • ein Out-of-Tree-Paket mit BR2_EXTERNAL wie gezeigt unter:https://github.com/cirosantilli/buildroot/tree/out-of-tree-2016.05
  • *_OVERRIDE_SRCDIR + andere Git-Submodule, wie erklärt unter:Wie ändert man die Quelle von Buildroot-Paketen für die Paketentwicklung?

Geänderte Dateien:

Paket/Config.in

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

Paket/hello/Config.in

config BR2_PACKAGE_HELLO
    bool "hello"
    help
        Hello world package.

        http://example.com

Paket/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))

Paket/hello/src/.gitignore

hello

Paket/hello/src/Makefile

CC = gcc

.PHONY: clean

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

clean:
    rm hello

Paket/hello/src/hello.c

#include <stdio.h>

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

Verwendung:

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

Von innerhalb von qemu:

hello

Erwartete Ausgabe:

hello

Getestet in Ubuntu 16.04.


Linux
  1. So fügen Sie einen Drucker in Linux Mint 12 hinzu | Drucker in Linux Mint hinzufügen

  2. So überprüfen Sie die Details eines Softwarepakets in Ubuntu Linux

  3. So erstellen Sie ein Linux-RPM-Paket

  4. So fügen Sie Benutzer zu einer Gruppe in Linux hinzu

  5. Wie füge ich Chromedriver zu PATH unter Linux hinzu?

So fügen Sie einen Benutzer zu einer Gruppe in Linux hinzu

So installieren Sie Software von der Quelle in Linux

So fügen Sie eine Route unter Linux hinzu

Linux – Wie installiere ich X11 auf dem eigenen Linux-Buildroot-System?

So fügen Sie einen Benutzer zu einer Gruppe unter Linux hinzu

So fügen Sie einen Benutzer zu einer Linux-Gruppe hinzu