Yocto Linux (バージョン 1.3) を使用するプロジェクトのカーネル モジュールに取り組んでいます。Yocto プロジェクトのカーネル ヘッダーとコンパイラとライブラリを使用したいのですが、毎回 bitbake を実行する必要なくカーネル モジュールを開発したいと考えています。これに対する私の最初の解決策は、次のようなものを使用して devshell タスクを実行し、環境変数を抽出することでした。
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 を実行する前に source します
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
今私の質問に:
私はこれについて完全に間違っていますか?カーネルモジュールをクロス開発するための推奨される方法は何ですか? bitbake devshell を開いて毎回そこでコード開発を行いたくないので、私はこのようにしています。
この種の動作 (動作するモジュールをコンパイルできます) ですが、make スクリプトを実行すると、カーネル構成が無効であるというエラー メッセージが表示されます。また、KERNEL_PATH をカーネル パッケージの git ディレクトリ (build/tmp/work///git (有効な .config ファイルと思われるファイルを含む) に設定) で試してみましたが、同様のエラーが発生します。
devshell を開かずに環境を抽出するにはどうすればよいですか? 同僚が手動で行う必要がないように、それを抽出するスクリプトを書きたいと思います。devshell コマンドは、完全に別の Xterm ウィンドウを開きます。