FON2100E openwrt backfire 10.03.1用クロスコンパイル環境の構築

昨日やったのでかなりうろ覚え。ホストはarch linux x86_64

参考:http://wiki.openwrt.org/doc/howto/buildroot.exigence

svn co --revision=29596 svn://svn.openwrt.org/openwrt/branches/backfire
cd backfire
./scripts/feeds update -a
make menuconfig # targetとか設定
m -j 8
export PATH=$PATH:`pwd`/staging_dir/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin
export CC=mips-openwrt-linux-uclibc-gcc
export LD=mips-openwrt-linux-uclibc-ld

あとは適当にクロスコンパイル。configure引数:

CFLAGS=-Os ./configure --build=x86_64-pc-linux-gnu --host=mips-openwrt-linux-uclibc --target=mips-openwrt-linux-uclibc

C++プログラムはこのままだとstdc++にリンクする(でかい!)ので、uclibcxxを使いたい。

uclibcxxのビルド:

./scripts/feed install -p uclibcxx
make menuconfig # libs/uclibcxxをYに指定
m package/uclibc++/compile V=99
m package/uclibc++/install V=99

configure指定してクロスコンパイル対象のビルド。適宜変更すること:

CFLAGS=-Os CXXFLAGS="-fno-builtin -nostdinc++" LDFLAGS="-L/home/kouhei/openwrt/backfire/staging_dir/target-mips_uClibc-0.9.30.1/usr/lib" CPPFLAGS="-I/home/kouhei/openwrt/backfire/staging_dir/target-mips_uClibc-0.9.30.1/usr/include/uClibc++" LIBS="-nodefaultlibs -luClibc++ -lm -lgcc" ./configure --build=x86_64-pc-linux-gnu --host=mips-openwrt-linux-uclibc --target=mips-openwrt-linux-uclibc

stripしとくといいかも:

mips-openwrt-linux-uclibc-strip hogehoge

openwrt上で:

opkg update
opkg install uclibcxx

これで動くバイナリができるはず。