0

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

今私の質問に:

  1. 私はこれについて完全に間違っていますか?カーネルモジュールをクロス開発するための推奨される方法は何ですか? bitbake devshell を開いて毎回そこでコード開発を行いたくないので、私はこのようにしています。

  2. この種の動作 (動作するモジュールをコンパイルできます) ですが、make スクリプトを実行すると、カーネル構成が無効であるというエラー メッセージが表示されます。また、KERNEL_PATH をカーネル パッケージの git ディレクトリ (build/tmp/work///git (有効な .config ファイルと思われるファイルを含む) に設定) で試してみましたが、同様のエラーが発生します。

  3. devshell を開かずに環境を抽出するにはどうすればよいですか? 同僚が手動で行う必要がないように、それを抽出するスクリプトを書きたいと思います。devshell コマンドは、完全に別の Xterm ウィンドウを開きます。

4

2 に答える 2

0

Ayman のより完全なソリューションではなく、簡単なハックをしたい場合は、各ビルド ステージを完了するために実行されるスクリプトが次のディレクトリにあります。 ./build/tmp/work/{target_platform}/{package}/{version}/temp/run.do_{build_stage}

これらのスクリプトは、ディレクトリからスタンドアロンで実行でき、./temp/必要なすべての環境変数が含まれています。

于 2014-12-17T05:45:52.677 に答える