2013-05-13 85 views
5

Tôi đang cố gắng hiểu cách tôi biên dịch chương trình sẽ chạy trên bảng beagle của tôi. Tôi cần phải biên dịch một số chương trình phức tạp mà tôi hiện đang chạy trong fedora, nhưng việc hiểu cách sử dụng Open Embedded và BitBake đã tỏ ra phiền hà. Tôi nghĩ rằng đã có một số thay đổi quan trọng để openembedded gần đây và cấu trúc thư mục cài đặt OE của tôi thậm chí không phù hợp với những gì tôi đang tìm kiếm ở nơi khác trực tuyến như xa như hướng dẫn và làm thế nào để đi.Làm cách nào để sử dụng bitbake để biên dịch chương trình đơn giản này cho beagleboard?

Tôi làm theo các hướng here lập OE-Core, mà đã cho tôi cấu trúc thư mục sau đây:

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

Tôi đã cố gắng để đun sôi nó xuống đến một khởi đầu cực kỳ đơn giản. Nếu tôi có thể tìm ra cách để BitBake chương trình đơn giản này, tôi sẽ nhảy vọt lên trước nơi tôi đang ở.

#include <stdio.h> 

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

Tôi nhận thấy rằng OpenEmbedded website quá chưa đủ để sử dụng. Ví dụ: tôi tìm thấy this page không cho tôi biết tệp nào nên chứa nội dung được hiển thị và không có gì hơn 'TODO' được đánh dấu trong một số phần.

Vì vậy, nếu có ai có kinh nghiệm sử dụng BitBake, một số gợi ý về cách biên dịch chéo chương trình đơn giản của tôi sẽ thực sự hữu ích. Các tệp công thức của tôi đi đâu? Làm thế nào để tôi gọi chúng bằng bitbake? Cảm ơn.

Trả lời

0

Tôi nghĩ rằng kiểm tra ra các hoạt động xung quanh Linux Foundation Yocto project có thể giúp cho các loại hình chủ trương. Wikpedia page for Open Embedded nói điều này:

Dự án OpenEmbedded-Core (OE-Core viết tắt) là kết quả của việc hợp nhất Dự án Yocto với OpenEmbedded. [7] Đây là phiên bản mới nhất của OpenEmbedded và nhiều công thức nấu ăn OE-dev có sẵn trong OE-Core. Phiên bản mới hơn của công thức nấu ăn gói chỉ có thể được chuyển cho OpenEmbedded-Core.

Có vẻ như OpenEmbedded (hoặc lõi OpenEmbedded) đã trải qua quá trình tái cơ cấu, điều này có thể giải thích lý do tại sao mọi thứ không khớp với tài liệu cũ hơn.

Tài liệu dự án Yocto có vẻ toàn diện hơn và cập nhật hơn. Dự án Yocto cũng xuất hiện nhiều hơn. Nó được hỗ trợ bởi các tập đoàn lớn (bao gồm Intel, TI, vv), và có vẻ như việc kiểm soát chất lượng đã thấy đầu tư. Những điều này với tôi có vẻ là lý do tốt để làm quen với Dự án Yocto ngay cả khi vẫn muốn gắn bó với lõi OpenEmbedded. Dựa trên trí nhớ của tôi từ nhiều năm trước, có vẻ như phạm vi của lõi OpenEmbedded bị hạn chế nhiều so với trước đây.

Để phát triển ứng dụng phức tạp hơn, bạn có thể hưởng lợi từ việc tìm hiểu và sử dụng các lớp OE/Yocto khác nhau.

Dù sao, những gì cụ thể đến với Bảng Beagle, dự án Yocto bao gồm lớp hỗ trợ bảng cho điều đó; Texas Instruments là thành viên của Dự án Yocto (xem Yocto Project member list). Nếu bạn muốn xây dựng ứng dụng cho Bảng Beagle, tôi sẽ tưởng tượng các lớp meta-beagle và/hoặc meta-ti hữu ích.Bạn có thể thấy các lớp OE/Yocto công cộng quan trọng được liệt kê ở đây:

5

tôi đã tìm thấy các tài liệu dự án Yocto được nhiều hơn hiện tại so với tài liệu hướng dẫn OpenEmbedded. Đặc biệt, tôi muốn giới thiệu:

Gần đây tôi đã tạo ra một công thức đơn giản để kiểm tra một cái gì đó, và nó có thể giúp bạn. Tôi đặt công thức trong lớp meta của riêng mình. Trong ví dụ của bạn, lớp meta mới sẽ nằm trong thư mục oe-core (bên cạnh meta, meta-skeleton, vv). Thiết lập lớp meta như các lớp khác. Cấu trúc thư mục của công thức trông giống như sau:

$ 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 

Mã nguồn (uinput.c) nằm trong thư mục tệp. Công thức sau đó sẽ trông giống như sau:

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