2013-05-13 9 views
5

Sto cercando di capire come compilo i programmi che verranno eseguiti sulla mia beagle board. Ho bisogno di compilare alcuni programmi complessi che correntemente sto correndo in fedora, ma capire come usare Open Embedded e BitBake si è rivelato problematico. Penso che ci siano stati alcuni cambiamenti significativi di openembedded di recente e la struttura delle directory della mia installazione OE non corrisponde nemmeno a quello che sto trovando altrove online per quanto riguarda tutorial e how-to-go.Come si usa bitbake per compilare questo semplice programma per beagleboard?

Ho seguito le istruzioni per la creazione di here OE-Core, che mi ha dato la seguente struttura di directory:

[[email protected] ~]$ ls oe-core -al 
total 52 
drwxr-xr-x 9 user user 4096 May 13 13:31 . 
drwx------. 31 user user 4096 May 13 12:56 .. 
drwxr-xr-x 9 user user 4096 May 10 11:52 bitbake 
drwxrwxr-x 8 user user 4096 May 13 13:36 build 
drwxr-xr-x 8 user user 4096 May 13 13:33 .git 
-rw-r--r-- 1 user user 165 May 10 11:51 .gitignore 
-rw-r--r-- 1 user user 545 May 10 11:51 LICENSE 
drwxr-xr-x 21 user user 4096 May 10 11:51 meta 
drwxr-xr-x 4 user user 4096 May 10 11:51 meta-hob 
drwxr-xr-x 6 user user 4096 May 10 11:51 meta-skeleton 
-rwxr-xr-x 1 user user 1592 May 10 11:51 oe-init-build-env 
-rw-r--r-- 1 user user 495 May 10 11:51 README 
drwxr-xr-x 8 user user 4096 May 10 11:51 scripts 

Ho provato a bollire fino ad un inizio ultra-semplicistico. Se riesco a capire come BitBake questo semplice programma vorrei fare passi da gigante davanti a dove sono attualmente.

#include <stdio.h> 

void main(int argc, char* argv[]) { 
    printf("Hello World.\r\n"); 
} 

Ho constatato che il OpenEmbedded website è troppo immaturo per essere di qualche utilità. Ad esempio, ho trovato this page che non mi dice quali file devono contenere i contenuti mostrati e non ha nient'altro che 'TODO' segnato in alcune sezioni.

Quindi, se qualcuno ha esperienza con BitBake, alcuni suggerimenti su come compilare il mio semplice programma di cross sarebbe molto utile. Dove vanno i miei file delle ricette? Come li invoco con bitbake? Grazie.

risposta

0

Penso controllando l'attività intorno Linux Foundation Yocto project potrebbe aiutare per questo tipo di imprese. Il Wikpedia page for Open Embedded dice questo:.

L'OpenEmbedded-Core Progetto (OE-Core in breve) portato dalla fusione del Progetto Yocto con OpenEmbedded [7] Questa è la versione più recente di OpenEmbedded e molte delle ricette OE-dev sono disponibili in OE-Core. Le versioni più recenti delle ricette dei pacchetti possono essere convertite per OpenEmbedded-Core.

Sembra che OpenEmbedded (o quello che è diventato OpenEmbedded-core) ha subito una ristrutturazione, il che forse spiega perché le cose non si accordano con la documentazione precedente.

La documentazione del progetto Yocto sembra molto più completa e aggiornata. Il progetto Yocto appare anche più attivo. È supportato dalle grandi aziende (tra cui Intel, TI, ecc.) E sembra che il controllo di qualità abbia visto gli investimenti. Questi per me sembrano buoni motivi per familiarizzare con Yocto Project, anche se ancora voglio rimanere fedele a OpenEmbedded-core. Sulla base della mia memoria di anni fa, sembra che lo scopo di OpenEmbedded-core sia molto limitato rispetto a prima.

Per uno sviluppo di applicazioni più complicato, probabilmente trarre vantaggio dall'apprendimento e dall'utilizzo di diversi livelli di OE/Yocto.

In ogni caso, ciò che riguarda specificamente Beagle Board, il progetto Yocto include uno strato di supporto per la scheda; Texas Instruments è membro di Yocto Project (vedi Yocto Project member list). Se vuoi creare app per Beagle Board, immagino che i layer meta-beagle e/o meta-ti siano utili.Potete vedere le importanti strati pubblici OE/Yocto elencati qui:

5

ho trovato la documentazione Yocto progetto di essere più attuale che la documentazione OpenEmbedded. In particolare, mi sento di raccomandare:

Recentemente ho creato una ricetta semplice per testare qualcosa, e potrebbe aiutare. Ho messo la ricetta nel mio meta layer. Nel tuo esempio, il nuovo meta layer si troverà nella directory oe-core (accanto a meta, meta-skeleton, ecc.). Imposta il meta layer come gli altri. La struttura della directory della ricetta è simile a questa:

$ ls -al uinput-test/ 
drwxrwxr-x 2 me me 4096 Apr 24 09:45 files 
-rwxr--r-- 1 me me 321 Apr 24 11:33 uinput-test_1.0.bb 

Il codice sorgente (uinput.c) si trova nella directory dei file. La ricetta appare così:

DESCRIPTION = "uinput test" 
PR = "r0" 
LICENSE = "CLOSED" 
RM_WORK_EXCLUDE += "uinput-test" 

SRC_URI = "file://uinput.c \ 
      " 
do_compile() { 
    ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/uinput.c -o uinput-test 
} 

do_install() { 
    install -m 0755 -d ${D}${bindir} 
    install -m 0755 ${S}/uinput-test ${D}${bindir} 
} 
Problemi correlati