meta-toolchain
blog
2019-4-1 12:42 JST

meta-toolchain

Yocto では他に配布可能なクロスコンパイル環境を作成することができます。以下に Freescale の Sabresd 用に toolchain (SDK ともいう) を作る手順を掲げます。

bitbake コマンドで典型的なクロスコンパイル環境を作成することができます。

$bitake meta-toolchain
$ls tmp/deploy/sdk
poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.5.1.sh

生成されるのはシェルプログラムです。これを実行することにより /opt/poky/1.5.1/ にクロスコンパイラが生成されます。以後、
/opt/poky/1.5.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi
にパスを通しておけば、クロスコンパイラとして、arm-poky-linux-gnueabi-gcc が使えるようになります。私が作った時の gcc のバージョンては 4.8.1 でした。ターゲット(この時は MX6Q 用)に最適化されています(VFPやNEONが使える設定になっている)。

さらに Qt 用の SDK は次のようにして作成可能です。

$bitbake meta-toolchain-qt
$ls tmp/deploy/sdk
poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.5.1.sh
poky-eglibc-x86_64-meta-toolchain-qt-cortexa9hf-vfp-neon-toolchain-qt-1.5.1.sh

インストールすると
/opt/poky/1.5.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi
を仮想のrootとみたてた環境ができます。例えば Qt であれば

-   <仮想root>/usr/include/qt4/ にヘッダー
-   <仮想root>/usr/lib に ライブラリ
-   <仮想root>/usr/bin/arm-poky-linux-gnueabi にクロスコンパイラ

を見ることができます。このクロスコンパイラと合わせて使う事でQt のアプリケーションを作成可能です。

libconfig-dev を追加する

libconfig 用の環境を toolchain に追加するために、meta-toolchain.bbapend を作成し、環境を toolchain に追加することができます。

meta-toolchain.bbappned は次のようにしました。これにより、次回からの bitake meta-toolchain では libconfig-dev を含むようになります。(あれ?local.conf で出来そうだけど、、、、未確認)

TOOLCHAIN_TARGET_TASK += "libconfig-dev"