[Suzaku:01051] linux-2.6.18-at2.tar.gzでのローダブルカーネルモジュールのクロスコンパイルについて

江口敦央 email@hidden
2007年 10月 15日 (月) 20:10:36 JST


お世話になっております、江口と申します。
現在linux-2.6.18-at2.tar.gzと atmark-dist-20071005.tar.gzを用いてローダ
ブルカーネルモジュールのクロスコンパイルを行っております。
ターゲットマシンはSUZAKU-Vです。

その際にMakeの実行時にarm用の設定が散見されており、それが原因かどうかわ
かりませんが、コンパイル時にエラーがでております。

具体的には、

make -C /.../linux-2.6.18-at2 M=(対象のソースの場所)

これを実行すると、まずKCCがarm-linux-gccとなっており、arm用のクロスコン
パイルが実行されます。
linux-2.6.18-at2/Makefileを見るとARCH=armとなっているようです。

そこで、

make -C /.../linux-2.6.18-at2 M=(対象のソースの場所) KCC=powerpc-linux-
gcc LD=powerpc-linux-ld

を実行すると、インクルードファイルが見つからないといったエラーがでます。

実行状況を詳しくみるために、-nオプションをつけて実行すると以下のようなコ
マンドを実行していることがわかりました。見やすくするために適当に改行をい
れています。


make -f scripts/Makefile.build obj=/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx

set -e;

echo '  CC [M]  /home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/kaodv-mod.o';

arm-linux-gcc
-Wp,-MD,/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.d
-nostdinc -isystem /usr/lib/gcc/arm-linux/3.4.4/include -D__KERNEL__
-Iinclude  -include include/linux/autoconf.h -mlittle-endian -Wall
-Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing
-fno-common -O2 -mapcs-32 -mno-thumb-interwork   -malignment-traps
-msoft-float -Uarm -fomit-frame-pointer  -Wdeclaration-after-statement
-D KERNEL26   -DMODULE -D"KBUILD_STR(s)=#s"
-D"KBUILD_BASENAME=KBUILD_STR(kaodv_mod)"
-D"KBUILD_MODNAME=KBUILD_STR(kaodv)" -c -o
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/kaodv-mod.o
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/kaodv-mod.c;
scripts/basic/fixdep
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.d
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/kaodv-mod.o 'arm-linux-gcc
-Wp,-MD,/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.d
-nostdinc -isystem /usr/lib/gcc/arm-linux/3.4.4/include -D__KERNEL__
-Iinclude  -include include/linux/autoconf.h -mlittle-endian -Wall
-Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing
-fno-common -O2 -mapcs-32 -mno-thumb-interwork   -malignment-traps
-msoft-float -Uarm -fomit-frame-pointer  -Wdeclaration-after-statement
-D KERNEL26   -DMODULE -D"KBUILD_STR(s)=\#s"
-D"KBUILD_BASENAME=KBUILD_STR(kaodv_mod)"
-D"KBUILD_MODNAME=KBUILD_STR(kaodv)" -c -o
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/kaodv-mod.o
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/kaodv-mod.c' >
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.tmp; rm -f
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.d; mv -f
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.tmp
/home/atmark/aodv_ppc/aodv-uu-0.9.3/lnx/.kaodv-mod.o.cmd

上をよく見ると、

-isystem /usr/lib/gcc/arm-linux/3.4.4/include
-Uarm

のようなarm依存っぽいオプションがあることがわかります。
これがエラーの直接の原因かはわかりませんが、とりあえず上記のようなarm依
存の部分なくす必要があるかなと考えています。

これらの問題に関して対処法をご存知の方はご教授願えませんでしょうか?


江口敦央




suzaku メーリングリストの案内