[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