3.9.1-landiskクロスコンパイル
カーネルのクロスコンパイルの本番です。
make oldconfigは無事できたのですが、(ここはクロスは関係ない)本番のコンパイルができません。
# make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- zImage modules make: sh4-linux-gnu-gcc: Command not found CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h make[1]: `include/generated/machtypes.h' is up to date. CC kernel/bounds.s /bin/sh: 1: sh4-linux-gnu-gcc: not found make[1]: *** [kernel/bounds.s] Error 127 make: *** [prepare0] Error 2
色々変わった事があるみたい。
クロスコンパイラのパッケージは入れているので、
# find /usr/bin -name sh4-linux-gnu-* /usr/bin/sh4-linux-gnu-gcov-4.7 /usr/bin/sh4-linux-gnu-objcopy /usr/bin/sh4-linux-gnu-ranlib /usr/bin/sh4-linux-gnu-strip /usr/bin/sh4-linux-gnu-addr2line /usr/bin/sh4-linux-gnu-gprof /usr/bin/sh4-linux-gnu-elfedit /usr/bin/sh4-linux-gnu-readelf /usr/bin/sh4-linux-gnu-strings /usr/bin/sh4-linux-gnu-nm /usr/bin/sh4-linux-gnu-objdump /usr/bin/sh4-linux-gnu-c++filt /usr/bin/sh4-linux-gnu-gcc-ranlib-4.7 /usr/bin/sh4-linux-gnu-ld /usr/bin/sh4-linux-gnu-gcc-4.7 /usr/bin/sh4-linux-gnu-gcc-nm-4.7 /usr/bin/sh4-linux-gnu-cpp-4.7 /usr/bin/sh4-linux-gnu-as /usr/bin/sh4-linux-gnu-ar /usr/bin/sh4-linux-gnu-gcc-ar-4.7 /usr/bin/sh4-linux-gnu-size /usr/bin/sh4-linux-gnu-ld.bfd
こんな風になっています。
kernel sourceはmultiarch対応ではないから?素直に?
ln -s /usr/bin/sh4-linux-gnu-gcc-4.7 /usr/bin/sh4-linux-gnu-gcc
して使ってみます。
今度はこんな風に止まりました。
BC kernel/timeconst.h /bin/sh: 1: bc: not found make[1]: *** [kernel/timeconst.h] Error 127 make: *** [kernel] Error 2
bcってこれの事みたい。http://kazmax.zpp.jp/cmd/b/bc.1.html
今までカーネルに関係あるなんて知りませんでした。存在についてはウル覚えで、どこかで説明を読んだことあるかな〜って感じです。
apt-get install bc
作業続行〜クロスコンパイル早いです。また止まった!
CC drivers/leds/leds-landisk.o drivers/leds/leds-landisk.c:135:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'landisk_led_probe' drivers/leds/leds-landisk.c:159:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'landisk_led_remove' drivers/leds/leds-landisk.c:176:17: error: 'landisk_led_probe' undeclared here (not in a function) drivers/leds/leds-landisk.c:177:8: error: implicit declaration of function '__devexit_p' [-Werror=implicit-function-declaration] drivers/leds/leds-landisk.c:177:30: error: 'landisk_led_remove' undeclared here (not in a function) drivers/leds/leds-landisk.c: In function 'landisk_led_init': drivers/leds/leds-landisk.c:225:8: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] cc1: some warnings being treated as errors make[2]: *** [drivers/leds/leds-landisk.o] Error 1 make[1]: *** [drivers/leds] Error 2 make: *** [drivers] Error 2
leds-landisk.cの__devinit,__devexitと__devexit_pがまずいみたい。単純に無くしていいみたい。更に続行〜
洗濯物干していたらコンパイル終わってました。(早)
make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- INSTALL_MOD_PATH=../modules-3.9.1-landisk modules_install
DEPMOD 3.9.1-landisk-dirty
が気になります。fileをcommitせずビルドすると-dirtyが付くらしい。
http://htc-linux.org/wiki/index.php?title=AdvancedGitGuide
コミットしてからclean,build、でもdirty消えない。
5/11午後訂正:コミットしてなかった(理解してなかった。tagを付けたら分かった)
どうしても 3.9.1-landisk+になってしまうみたい。
+をなくす方法ご存じの方教えて下さい。終わり。