ZAURUSのクロスコンパイル環境を作る
ZAURUSのクロスコンパイル環境を、OpenBSD/i386上に作る。
とりあえず、make cross-distrib _
- まず、ソースを最新にします。
- ただし、OpenBSD 4.2の最新です。
- タグを指定しないで、cvs を実行すると、currentになってしまいます。
# cd /usr/src # CVSROOT=anoncvs@anoncvs.jp.openbsd.org:/cvs cvs update -P -rOPENBSD_4_2
- しばらく待つと、ソースが最新になります。
- ここで、zaurusをターゲットとしたクロスコンパイル環境を作ります。
# pwd /usr/src # TARGET=zaurus make cross-distrib
- しばらくすると、エラーがでます。
/usr/cross/zaurus/usr/bin/cc -nostdlib -L/usr/cross/zaurus/usr/lib -static -o comsat comsat.o /usr/cross/zaurus/usr/lib/gcc-lib/arm-unknown-openbsd4.2/3.3.5/../../../../arm-u nknown-openbsd4.2/bin/ld: warning: cannot find entry symbol _start; defaulting t o 00008114 comsat.o(.text+0x3c): In function `main': : undefined reference to `getsockname' comsat.o(.text+0x4c): In function `main': : undefined reference to `__errno' comsat.o(.text+0x58): In function `main': : undefined reference to `strerror' : : comsat.o(.text+0xd58): In function `jkfprintf': : undefined reference to `__guard' collect2: ld returned 1 exit status *** Error code 1 Stop in /usr/src/libexec/comsat (line 95 of /usr/share/mk/bsd.prog.mk). *** Error code 1 Stop in /usr/src/libexec. *** Error code 1 Stop in /usr/src (line 277 of Makefile.cross).
エラーに対処してみる(まだ、対処できていない) _
- symbol _start がねーと言っています。
- ccのオプションに-nostdlibを指定しているため、標準ライブラリがリンクされていないのが原因と考えられます。
- 該当のディレクトリへ行き、自分でコンパイルします。
# cd /usr/src/libexec/comsat # /usr/cross/zaurus/usr/bin/cc -L/usr/cross/zaurus/usr/lib \\ -static -c comsat.c # /usr/cross/zaurus/usr/bin/cc -L/usr/cross/zaurus/usr/lib \\ -static -o comsat comsat.o - もう一度、make cross-contrib してみます。
# cd /usr/src # TARGET=zaurus make cross-distrib
- 同じエラーで止まる。
- comsatが、comsat.oやcomsat.cより新しいから、コンパイルはされないと思うんだけど、
- なぜ、makeが実行される。
- 行き詰まり
Copyright (C) 2003-2006 A.SAKAKI All Rights Reserved.
パソコンでサーバーを構築して、自宅サーバにしよう。