2013-05-13 28 views
5

Próbuję zrozumieć, w jaki sposób kompiluję programy, które będą działać na mojej tablicy Beagle. Muszę skompilować kilka złożonych programów, które obecnie uruchamiam w Fedorze, ale zrozumienie jak używać Open Embedded i BitBake okazało się kłopotliwe. Wydaje mi się, że ostatnio wprowadzono kilka istotnych zmian w openembedded, a struktura katalogów mojej instalacji OE nie pasuje nawet do tego, co znajduję gdzie indziej w Internecie, jeśli chodzi o samouczki i porady.Jak używać bitbake do krzyżowania tego prostego programu do beagleboard?

I po kierunkach here konfigurowania OE-core, który dał mi następującą strukturę katalogów:

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

Próbowałam gotować aż do ultra-uproszczonym początku. Jeśli uda mi się wymyślić, jak BitBake ten prosty program, będę skoczył i przekroczył granicę obecnego miejsca.

#include <stdio.h> 

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

jestem uznając, że jest zbyt niedojrzała OpenEmbedded website aby być dowolnego wykorzystania. Na przykład znalazłem this page, który nie mówi mi, które pliki powinny zawierać przedstawione treści i nie ma nic oprócz "TODO" zaznaczonego w niektórych sekcjach.

Jeśli ktoś ma doświadczenie w korzystaniu z BitBake, niektóre wskazówki dotyczące tego, w jaki sposób przekompilować mój prosty program, byłyby naprawdę pomocne. Gdzie idą moje pliki z przepisami? Jak je wywołać za pomocą bitbota? Dzięki.

Odpowiedz

0

myślę sprawdzanie aktywności wokół Linux Fundacji Yocto project może pomóc do tego rodzaju przedsięwzięć. Wikpedia page for Open Embedded to mówi.

OpenEmbedded Core Project (OE-Core na krótkie) otrzymano z seryjnej Projektu Yocto z OpenEmbedded [7] Jest to najnowsza wersja OpenEmbedded i wiele receptur OE-dev jest dostępnych w OE-Core. Nowsze wersje receptur pakietów można przenosić tylko dla OpenEmbedded-Core.

Wygląda na to, że OpenEmbedded (lub coś, co stało się OpenEmbedded-core) przeszło dość restrukturyzację, co być może tłumaczy, dlaczego rzeczy nie pasują do starszej dokumentacji.

Dokumentacja projektu Yocto wydaje się bardziej kompleksowa i aktualna. Projekt Yocto również wydaje się bardziej aktywny. Jest wspierany przez duże korporacje (w tym Intel, TI itp.) I wydaje się, że kontrola jakości odnotowała inwestycje. Wydaje mi się, że to dobry powód, aby zapoznać się z Yocto Project, nawet jeśli nadal chce się trzymać OpenEmbedded-core. Bazując na mojej pamięci sprzed lat, wydaje mi się, że zakres OpenEmbedded-core jest znacznie ograniczony, niż był kiedyś.

Dla bardziej skomplikowanego rozwoju aplikacji, prawdopodobnie skorzystasz z poznawania i używania różnych warstw OE/Yocto.

W każdym razie, co konkretnie chodzi o Beagle Board, projekt Yocto zawiera w sobie warstwę wspierającą deskę; Texas Instruments jest członkiem Yocto Project (patrz Yocto Project member list). Jeśli chcesz tworzyć aplikacje dla Beagle Board, wyobrażam sobie, że warstwy meta-beagle i/lub meta-ti są przydatne.Widać ważnych publicznych warstw OE/Yocto wymienione tutaj:

5

Znalazłem dokumentację Yocto Projektu być bardziej aktualna niż OpenEmbedded dokumentacji. W szczególności polecam:

Niedawno stworzyliśmy prosty przepis przetestować coś, a może pomóc. Wstawiam przepis do mojej własnej warstwy meta. W twoim przykładzie nowa warstwa meta znajdowałaby się w katalogu Oe-Core (obok meta, meta-szkieletu itp.). Skonfiguruj warstwę meta, tak jak inne. Struktura katalogów receptury wygląda następująco:

$ 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 

Kod źródłowy (uinput.c) znajduje się w katalogu plików. Przepis wygląda następująco:

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