プラスα空間

ブログ in お市 のーと

PowerMac Ubuntu9.10にARMクロスコンパイル環境構築しようとして挫折

LANDISK HDL4-Gにtelnetを入れたら(使えるようにしたら)、色々やりたくなってきてしまって…。LANDISK HDL4-GをNFSサーバにする事が目的だったのですが、それに満足出来なくなってしまって…。

debianパッケージの最新版は、armelアーキテクチャの物しか置かれていなくて、最新版のarmアーキテクチャ用を用意するには、自分でコンパイルする必要があります。

それで、次の記事を参考に、PowerMacのUbuntu 9.10用にクロスコンパイル環境を構築しようとしました。

結果から言うと、失敗しました。もう、手の出し様の無い所なので、挫折しました。

まず、apt-crossのインストールです。

$ sudo apt-get install apt-cross

次に、クロスコンパイラ用のライブラリとヘッダをインストールします。

$ sudo apt-cross -a arm -S stable -m http://ftp.jp.debian.org/debian/ --update
$ sudo apt-cross -a arm -S stable -m http://ftp.jp.debian.org/debian/ \
> --install gcc gcc-4.3 libgcc1 cpp cpp-4.3 gcc-4.3-base libgomp1 libc6-dev

そして、binutil(as, ldなど)をインストールします。

$ wget http://ring.maffin.ad.jp/archives/GNU/binutils/binutils-2.20.1.tar.bz2
$ tar jxvf binutils-2.20.1.tar.bz2
$ cd binutils-2.20.1/
$ ./configure --target=arm-linux-gnu --enable-shared \
> --prefix=/usr/cross/arm
$ make
$ sudo make install
$ ls -1 /usr/cross/arm/bin
arm-linux-gnu-addr2line
arm-linux-gnu-ar
arm-linux-gnu-as
arm-linux-gnu-c++filt
arm-linux-gnu-gprof
arm-linux-gnu-ld
arm-linux-gnu-nm
arm-linux-gnu-objcopy
arm-linux-gnu-objdump
arm-linux-gnu-ranlib
arm-linux-gnu-readelf
arm-linux-gnu-size
arm-linux-gnu-strings
arm-linux-gnu-strip

bison, flexなどもインストールします。

$ sudo apt-get install bison flex
$ sudo apt-get install libgmp-ocaml-dev libmpfr-dev

いよいよ、gccのコンパイルです。

$ wget http://ring.maffin.ad.jp/archives/GNU/gcc/gcc-4.3.4/gcc-4.3.4.tar.bz2
$ mkdir source
$ tar jxvf gcc-4.3.4.tar.bz2 -C source
$ mkdir -p build/gcc
$ cd build/gcc
$ sudo su
# export PATH=/usr/cross/arm/bin:$PATH
# /home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/configure \
> --prefix=/usr/cross/arm \
> --target=arm-linux-gnu \
> --enable-shared --disable-nls \
> --with-as=/usr/cross/arm/bin/arm-linux-gnu-as \
> --with-ld=/usr/cross/arm/bin/arm-linux-gnu-ld \
> --with-headers=/usr/arm-linux-gnu/include \
> --with-libs=/usr/arm-linux-gnu/lib \
> --enable-languages="c,c++" \
> --disable-sjlj-exceptions
# make

途中でエラーになるので、includeファイルをリンクします。

# pushd /home/username/cross-compile/gcc-4.3.4/build/gcc/arm-linux-gnu/libgcc
# ln -s /usr/arm-linux-gnu/include
# popd
# make

さらに続けると、makeの途中で、次のエラーが出ました(行を折り返しています)。

/home/username/cross-compile/gcc-4.3.4/build/gcc/./gcc/xgcc
-B/home/username/cross-compile/gcc-4.3.4/build/gcc/./gcc/
-B/usr/cross/arm/arm-linux-gnu/bin/ -B/usr/cross/arm/arm-linux-gnu/lib/
-isystem /usr/cross/arm/arm-linux-gnu/include -isystem
/usr/cross/arm/arm-linux-gnu/sys-include -O2 -g -g -O2 -O2  -O2 -g -g -O2 
-DIN_GCC -DCROSS_DIRECTORY_STRUCTURE 
-W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition  -isystem ./include  -fomit-frame-pointer
-fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED   -I. -I. -I../.././gcc
-I/home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc
-I/home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc/.
-I/home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc/../gcc
-I/home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc/../include
-DHAVE_CC_TLS -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions
-c /home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc/../gcc/unwind-dw2.c
-fvisibility=hidden -DHIDE_EXPORTS
/home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc/../gcc/unwind-dw2.c:
In function 'init_dwarf_reg_size_table':
/home/username/cross-compile/gcc-4.3.4/source/gcc-4.3.4/libgcc/../gcc/unwind-dw2.c:1419:
internal compiler error: in arm_dbx_register_number, at config/arm/arm.c:18265
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[2]: *** [unwind-dw2.o] エラー 1

Bugzillaも見ましたけれど、解決されていない様です。

お手上げです。

コメントを残す