GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menambahkan perangkat lunak saya sendiri ke paket Buildroot Linux?

Secara umum, sumber untuk paket buildroot diambil dari tarball (yang diunduh). Apa yang Anda lakukan sekarang (menempatkan sumber di dalam paket/HelloWorld) bukanlah cara yang tepat untuk melanjutkan.

Buildroot memang memiliki ketentuan untuk sumber paket 'lokal', yang dapat Anda gunakan jika Anda benar-benar membutuhkannya. Anda memerlukan variabel HELLOWORLD_SITE_METHOD untuk itu.

Lihat http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages untuk informasi selengkapnya.

Selain itu, Anda tidak perlu menentukan HELLOWORLD_DIR, HELLOWORLD_BINARY, HELLOWORLD_TARGET_BINARY.

Perbarui:mengenai pertanyaan tambahan Anda:

UPDATE:Program membangun dan menginstal di lokasi yang diinginkan tetapi ketika saya mencoba menjalankannya seperti ini:./helloworld, saya mendapatkan:bash:./helloworld:Tidak ada file atau direktori seperti itu, ia memiliki hak eksekusi .. ada apa dengan itu ? (Saya mencoba menjalankannya setelah me-mount therootfs.ext2 ke direktori ubuntu, target arch untuk buildroot adalah i368, jadi tidak apa-apa kan?)

Tidak, itu tidak bekerja seperti itu. Anda tidak bisa hanya me-mount rootfs.ext2 dan berharap untuk menjalankan program darinya. Hal ini antara lain karena program di dalam rootfs.ext2 dikompilasi dengan pustaka yang juga ada di dalam rootfs.ext2, tetapi jika Anda menjalankannya seperti itu, ia akan menggunakan pustaka di /usr/lib. Anda juga harus mem-boot sistem Anda sepenuhnya dengan rootfs.ext2, menggunakan qemu, atau menggunakan lingkungan chroot. Untuk chroot, Anda harus menggunakan format sistem file 'tar', bukan ext2. Lihat juga di sini:http://buildroot.uclibc.org/downloads/manual/manual.html#_chroot


Contoh teruji minimal di atas 2016.05

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

Contoh ini menambahkan sumber paket dalam hierarki, yang sederhana untuk tujuan pendidikan dan cara yang harus dilakukan jika Anda ingin menggabungkan kembali (pujian!),

Jika Anda tidak bermaksud menggabungkan kembali (booooh!), kemungkinan besar Anda ingin menggunakan Buildroot sebagai submodule git dan:

  • paket di luar pohon dengan BR2_EXTERNAL seperti yang ditunjukkan di:https://github.com/cirosantilli/buildroot/tree/out-of-tree-2016.05
  • *_OVERRIDE_SRCDIR + submodul git lainnya seperti yang dijelaskan di:Bagaimana cara memodifikasi sumber paket Buildroot untuk pengembangan paket?

File diubah:

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

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

package/hello/src/.gitignore

hello

paket/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");
}

Penggunaan:

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

Dari dalam qemu:

hello

Hasil yang diharapkan:

hello

Diuji di Ubuntu 16.04.


Linux
  1. Cara Memeriksa Detail Paket Perangkat Lunak di Ubuntu Linux

  2. Cara Menambahkan Repositori Perangkat Lunak Linux Microsoft

  3. Cara membuat paket RPM Linux

  1. Cara Menambahkan Pencetak di Linux Mint 12 | Tambahkan Pencetak di Linux Mint

  2. Cara Menguji Paket Tanpa Menginstalnya Di Linux

  3. Bagaimana cara menambahkan pengguna ke grup di Linux

  1. Linux – Bagaimana Mono Ajaib?

  2. Bagaimana cara menambahkan ruang swap di linux

  3. Bagaimana cara menambahkan Chromedriver ke PATH di linux?