GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ajouter mon propre logiciel à un package Buildroot Linux ?

En général, les sources des packages buildroot proviennent d'une archive tar (téléchargée). Ce que vous faites actuellement (placer les sources dans package/HelloWorld) n'est pas la bonne façon de procéder.

Buildroot a des dispositions pour les sources de paquets "locales", que vous pouvez utiliser si vous en avez vraiment besoin. Vous aurez besoin de la variable HELLOWORLD_SITE_METHOD pour cela.

Veuillez consulter http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages pour plus d'informations.

De plus, vous n'avez pas besoin de définir HELLOWORLD_DIR, HELLOWORLD_BINARY, HELLOWORLD_TARGET_BINARY.

Mise à jour :concernant votre question supplémentaire :

MISE À JOUR :Le programme se construit et s'installe à l'emplacement souhaité, mais lorsque j'essaie de l'exécuter comme ceci :./helloworld, j'obtiens :bash :./helloworld :aucun fichier ou répertoire de ce type, il a des droits d'exécution. ? (J'essaie de l'exécuter après avoir monté therootfs.ext2 dans un répertoire ubuntu, l'arche cible pour buildroot est i368, donc ça devrait aller, non ?)

Non, ça ne marche pas comme ça. Vous ne pouvez pas simplement monter rootfs.ext2 et vous attendre à exécuter des programmes à partir de celui-ci. C'est, entre autres, parce que les programmes à l'intérieur de rootfs.ext2 sont compilés avec les bibliothèques également à l'intérieur de rootfs.ext2, mais si vous l'exécutez ainsi, il utilisera les bibliothèques de /usr/lib. Vous devez soit démarrer votre système entièrement avec rootfs.ext2, utiliser qemu ou utiliser un environnement chroot. Pour chroot, vous devez utiliser le format de système de fichiers 'tar', pas ext2. Voir aussi ici :http://buildroot.uclibc.org/downloads/manual/manual.html#_chroot


Exemple testé minimal en plus de 2016.05

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

Cet exemple ajoute la source du paquet dans l'arborescence, ce qui est simple à des fins éducatives et la marche à suivre si vous souhaitez fusionner (bravo !),

Si vous n'avez pas l'intention de fusionner (booooh !), il est plus probable que vous souhaitiez utiliser Buildroot comme sous-module git et soit :

  • un package hors arbre avec BR2_EXTERNAL comme indiqué sur :https://github.com/cirosantilli/buildroot/tree/out-of-tree-2016.05
  • *_OVERRIDE_SRCDIR + autres sous-modules git comme expliqué à :Comment modifier la source des packages Buildroot pour le développement de packages ?

Fichiers modifiés :

package/Config.in

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

package/bonjour/Config.in

config BR2_PACKAGE_HELLO
    bool "hello"
    help
        Hello world package.

        http://example.com

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

paquet/hello/src/.gitignore

hello

paquet/hello/src/Makefile

CC = gcc

.PHONY: clean

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

clean:
    rm hello

paquet/hello/src/hello.c

#include <stdio.h>

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

Utilisation :

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

De l'intérieur de qemu :

hello

Sortie attendue :

hello

Testé dans Ubuntu 16.04.


Linux
  1. Comment ajouter une imprimante dans Linux Mint 12 | Ajouter une imprimante dans Linux Mint

  2. Comment vérifier les détails d'un package logiciel dans Ubuntu Linux

  3. Comment tester un paquet sans l'installer sous Linux

  4. Comment ajouter le référentiel de logiciels Linux de Microsoft

  5. Comment créer un package RPM Linux

Comment ajouter un utilisateur à un groupe sous Linux

Comment installer un logiciel à partir de la source sous Linux

Comment ajouter une route sous Linux

Linux - Comment installer X11 sur le propre système Linux Buildroot ?

Comment ajouter un utilisateur à un groupe sous Linux

Comment ajouter un utilisateur à un groupe Linux