2014-10-16 73 views
0

我正在使用Yocto Linux(1.3版)開發一個項目的內核模塊。我想使用我的Yocto項目中的內核頭文件和編譯器以及庫,但是無需每次都運行bitbake來開發內核模塊。我最初的解決方案,這是爲了執行開發人員專用殼層任務,並使用這樣的提取環境變量:如何在Yocto中構建食譜時提取使用的環境變量?

bitbake mykernel -c devshell 

然後在新的xterm窗口bitbake的爲我打開:

env | sed 's/\=\(.*\)/\="\1"/' > buildenv #put quotes around r-values in env listing 
^D #(I leave the devshell) 

然後把它複製到我開發目錄和源在運行make其所有的選項

KERNEL_PATH=/mypathto/build/tmp/sysroots/socfpga_cyclone5/usr/src/kernel 
source ./buildenv && make -C $KERNEL_PATH V=1 M=`pwd` \ 
ARCH=arm CROSS-COMPILE=arm-linux-gnueabihf- \ 
KERNEL_VERSION=3.13.0-00298-g3c7cbb9 \ 
CC="arm-linux-gnueabihf-gcc -mno-thumb-interwork -marm" \ 
LD=arm-linux-gnueabihf-ld AR=arm-linux-gnueabihf-ar 

現在我的問題之前:

  1. 我該說這個完全錯誤嗎?交叉開發內核模塊的推薦方式是什麼?我這樣做是因爲我不想打開一個bitbake devshell,並且每次都在那裏做我的代碼開發。

  2. 這類作品(我可以編譯工作模塊),但化妝劇本給我一個錯誤消息說核心配置是無效的。我也嘗試過將KERNEL_PATH設置爲內核包git目錄(build/tmp/work /// git(它包含什麼看起來是一個有效的.config文件),並且我得到了類似的錯誤。

  3. 如何在無需打開devshell的情況下提取env?我想編寫一個腳本來提取它,以便我的同事不必手動執行它。devshell命令將打開一個完全獨立的Xterm窗口,從而減少其可腳本化...

回答

2

SDK安裝程序是你在找什麼:

bitbake your-image -c populate_sdk 

然後,從您的build目錄轉到tmp/deploy/sdk

並執行生成的shell腳本。

此腳本將允許您生成並安裝sdk。

不僅sdk將允許您通過提供所需的環境變量和工具來交叉編譯您的內核,而且它還將提供一個sysroot +獨立工具鏈來幫助您輕鬆(並且通過簡單的方式,我的意思是非常簡單)與自動工具crosscompile應用程序(只要你提供Makefile.am和configure.ac)

只是獲取環境 - 設置 - *文件,得到了你的內核目錄和編譯。 或者,對於基於自動工具的應用程序開發, 轉到包含您的項目的文件夾(sources + Makefile.am和configure。AC)

做:

libtoolize --automake 
aclocal 
autoconf 
automake -a 

現在你的項目準備編譯:

./configure $CONFIGURE_FLAGS 
make 
make install DESTDIR=path/to/destination/dir 
+0

是的,這似乎是我想要的,除了我找不到任何關於如何將CMake添加到SDK中的文檔。 – benf 2015-01-20 19:06:46

0

如果你是一個快速的黑客攻擊後,反而艾曼的更完整的解決方案,腳本運行完成每個構建階段都可以在目錄中找到: ./build/tmp/work/{target_platform}/{package}/{version}/temp/run.do_{build_stage}

這些腳本可以從獨立運行10目錄,幷包含所有需要的環境變量。

相關問題