[Fli4l_dev] Informationen zum FBR (was: Gibt es eine neuere dev-sys-29-03-2010.tar.bz2 ?)
Christoph Schulz
fli4l at kristov.de
Mo Feb 9 22:41:19 CET 2015
Hallo!
[Ich kann nicht auf den Thread "Gibt es eine neuere dev-
sys-29-03-2010.tar.bz2 ?" antworten, der Server lehnt den Post ab (evtl. zu
viele Referenzen (> 20)), somit neuer Thread!]
> Aber wie geht es weiter ich konnte mit der alten dev-sys-29-03-2010
> so compilieren.
>
> sudo chroot fli4l_dev_sys/
> cd compile/Programm
> make i386-pc-linux
>
> Wie mache ich das jetzt bei dem buildroot fli4l-3.10.1?
Ein einfaches "make" geht nicht, weil das Buildroot eine Cross-Compiler-
Umgebung ist, d.h. du übersetzt deine Programme auf deinem Host, nicht
im FBR selbst. Damit kannst du somit Programme auch für andere
Architekturen bauen -- du brauchst also z.B. kein ARM-System, um Pakete für
ARM-Prozessoren zu bauen. Deshalb gibt es im FBR auch keinen gcc, keinen ld
usw. usf.
Um dein Paket einzubinden, schreibst du eine Config.in und eine <Paket>.mk
für dein FBR-Paket. Siehe die Buildroot-Dokumentation unter:
http://buildroot.uclibc.org/downloads/manual/manual.html#adding-packages
Das Paket legst du unterhalb von ~/.fbr/own an, also z.B. unter
~/.fbr/own/myprog. Darin legst du eine Config.in und eine myprog.mk an. Die
Config.in enthält Informationen zum Paket, etwa:
====== %< =====
config BR2_PACKAGE_MYPROG
bool "myprog"
help
Das ist mein tolles myprog-Programm.
====== %< =====
Die myprog.mk enthält Anweisungen zum Bau, etwa so:
====== %< =====
MYPROG_VERSION = 1.0
MYPROG_SOURCE = myprog.tar.gz
MYPROG_SITE = http://mein.server.de/download
MYPROG_LICENSE = GPLv2
# wie baue ich mein Programm?
define MYPROG_BUILD_CMDS
$(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" -C $(@D)
endef
# wie installiere ich mein Programm?
# hier: myprog wird nach usr/bin/myprog kopiert
define MYPROG_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0755 $(@D)/myprog $(TARGET_DIR)/usr/bin
endef
$(eval $(generic-package))
====== %< =====
Wie gesagt, unter dem obigen Link findest du mehr Information über das
Buildroot. Bibliotheken sind etwas komplizierter, da man auch dann i.d.R.
auch <Paket>_INSTALL_STAGING_CMDS benötigt. Wenn dein Paket
autoconf/automake nutzt, ist es hingegen viel einfacher, das kann dann
so aussehen:
====== %< =====
MYPROG_VERSION = 1.0
MYPROG_SOURCE = myprog.tar.gz
MYPROG_SITE = http://mein.server.de/download
MYPROG_LICENSE = GPLv2
$(eval $(autotools-package))
====== %< =====
Wenn deine Quellen nicht heruntergeladen werden können, sondern lokal
vorliegen, musst du die *_SOURCE- und *_SITE-Variablen abändern, etwa so:
====== %< =====
MYPROG_SITE = /home/sascha/meine/quellen/fuer/myprog
MYPROG_SITE_METHOD = local
MYPROG_SOURCE =
====== %< =====
Schließlich musst du dein Paket im Buildroot aktivieren:
./fbr-make buildroot-menuconfig
(dort "User-defined packages" ganz unten auswählen und in dem erscheinenden
Menü dein Paket auswählen, danach die Konfiguration via "Save" speichern
und via "Exit" das Programm verlassen). Um "menuconfig" zu nutzen, brauchst
du auf jeden Fall die ncurses-Bibliotheken (das Ubuntu-Paket heißt dafür
"libncurses5-dev" o.ä.). Danach kannst du das Paket einfach via
./fbr-make <Paket>
also z.B.
./fbr-make myprog
bauen und findest die Dateien hinterher in
~/.fbr/fbr-unknown-custom-x86/buildroot/output/target/
also z.B. als
~/.fbr/fbr-unknown-custom-x86/buildroot/output/target/usr/bin/myprog
wieder.
Viele Grüße,
--
Christoph Schulz
[fli4l-Team]
Mehr Informationen über die Mailingliste Fli4l_dev