OpenBSD/sgi クロス開発環境の構築を参考に、OpenBSD-current/armv7のクロス開発環境をOpenBSD-5.5/amd64上で行ってみたんですが…どうもOpenBSD-current/armv7のビルドはOpenBSD-current上で行わないとダメみたいで。という訳で、そこに転がっていたNetBookにOpenBSD-current/i386を放り込んで開発環境を用意してみるかと。
OpenBSD/armv7向けのクロス開発環境の構築と、これを使ったカーネルのビルドは簡単で、5 - Building the System from Source等の手順に従って/usr/srcにソースツリーを用意した状態で
cd /usr/src
make obj
TARGET=armv7 make cross-tools
cd /usr/src/sys/arch/armv7/conf
config GENERIC-SUNXI
cd ../compile/GENERIC-SUNXI
make CC=/usr/cross/armv7/usr/arm-unknown-openbsd5.6/bin/arm-unknown-openbsd5.6-cc \
LD=/usr/cross/armv7/usr/arm-unknown-openbsd5.6/bin/arm-unknown-openbsd5.6-ld -j2
|
とでもすればok。
問題はここから先。script.binは使わないけれど、これを作成するために必要なsunxi-toolsの構築は前回にある通り。ただしgit, gmake, libusb1をpkg_addしておく必要あり。OpenBSD-5.5の時はcommon.hにle32toh(x), le16toh(x)の定義を追加していたけれど、-currentでは<endian.h>側でこれらをサポートするようになるのでsunxi-tools.diffはそのうち直さないといけないかもしれない。
問題は、U-Bootの構築に使うtoolchain。binutils-2.24 + gcc-4.8.3 + newlib-2.0.0の組み合わせだとgcc-4.8.3のビルド中にcore吐いて落ちるので(OpenBSD-5.5/amd64ではそんなことはなかったのに)、binutils-2.24 + gcc-4.7.4 + newlib-2.0.0の組み合わせで。ARMバイナリさえ吐ければ良いという理由につき、gcc-4.7.4/gcc/config/arm/t-arm-elfの修正は一切無し。configureの設定はいつもと同じで、binutils-2.24は../configure --target=arm-none-eabi --prefix=/usr/local --enable-interwork --enable-multilib --disable-nls --disable-werror、gcc-4.7.4は../configure --target=arm-none-eabi --enable-languages=c --prefix=/usr/local --enable-interwork --enable-multilib --with-newlib --disable-nls --disable-libssp --disable-libgomp --with-gmp=/usr/local --disable-lto。
とりあえずこれでU-Bootの構築ができることを確認して…今日は時間切れ。59.75kg(18:30)