[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Cross compile (gcc-2.95.2 & binutils-2.9.1)



こんにちは、深海です。

クロスコンパイル環境つくってちょとうまくゆきません。どなたか助言あれば
くださいまし...

NetBSD-1.4.2/i386 の上に Cross compile 環境を作っているのですが、どこか
のページでコンパイル済みファイルを拾って来たら ELF な binary でしくしく
だったので、

  binutils-2.9.1.tar.gz
  gcc-core-2.95.2.tar.bz2

ここらへん使ってみました。

まず binutils を展開して、ソースの中を

  find . |xargs grep 'mips.*netbsd'

とやって見つかる target 指定に関するところ (bfd, as, ld だったかな) を

  mips-dec-netbsd* -> mips*-*-netbsd*

のように、 mipsel-unknown-netbsd な target に合うように書き換えて、

sys_errlist で怒られるので libiberty/strerror.c の頭に

  #undef NEED_sys_errlist

と書いて (^^;

% ./configure --target=mipsel-unknown-netbsd
% make
# make install

次に gcc を展開して

... の前に、 20000315 の snapshot を展開して

# cp -R somewhere/usr/include /usr/local/mipsel-unknown-netbsd/include

と全部コピーしておいて、

gcc で

% ./configure --target=mipsel-unknown-netbsd --with-gnu-as --with-gnu-ld
% make
# make install

して、 cross compiler を作りました。

その環境で、 2000/4/11 朝あたりに sup した current の src をコンパイルし
ました。

usr.sbin/config つくって sys/arch/hpcmips/conf/GENERIC を config してで
きた Makefile の中で ar as gcc cpp ld nm ranlib size strip をさっき作っ
たものを指定するようにして、

# make depend && make

してみました。

lorder は NetBSD-1.4.2 のものだし、 gcc で明示的に -mcpu=vr4100 も
-fpic も指定していないし、 gcc の specs ファイルの書き換えもしてません。

出来あがったカーネルは、

% file netbsd
netbsd: ELF 32-bit LSB executable, MIPS R3000_BE - invalid byte order, version 1
, statically linked, not stripped

となって、ブートさせてみると次のようになって、最終行から先に行きませんで
した。カーネルを snapshot のものに戻すとちゃんと先に進みます。

なるべくかんたんにクロスコンパイル環境が作れるとうれしいんですが、ちょっ
と努力が足らないようです。
# pkgsrc 使え or -current/i386 使えってことかな ? (^^;;;

mem_cluster_cnt = 2
mem_clusters[0] = {0x0,0x25d000}
mem_clusters[1] = {0x25d000,0xda3000}
loading 0x25d000,0xda3000
Copyright (c) 1996, 1997, 1998, 1999, 2000
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.4X (GENERIC) #0: Wed Apr 12 00:40:35 JST 2000
    root@localhost:/usr/src/sys/arch/hpcmips/compile/GENERIC
CASIO Cassiopeia E55 (NEC VR4111 rev1.0 69.391MHz)
total memory = 16384 KB
avail memory = 12616 KB
using 230 buffers containing 920 KB of memory
../../../../arch/hpcmips/vr/vr.c(294): vr_bus_reset() not implemented.
mainbus0 (root)
cpu0 at mainbus0: NEC VR4100 CPU Rev. 5.2 with software emulated floating point
Rev. 0.0
cpu0: L1 cache: 16KB/16B Instruction, 8KB/16B Data, direct mapped
cpu0: No L2 cache
cpu0: install VR specific idle routine
bivideo0 at mainbus0: pseudo video controller
hpcfb0 at bivideo0: hpcrasops 240x320 pixels, 4 colors, 30x32 chars: tvram redra
w
wsdisplay0 at hpcfb0
wsdisplay0: screen 0 added (std, vt100 emulation)
vrip0 at mainbus0
vrcmu0 at vrip0 addr 0xb000060-0xb00007f
vrgiu0 at vrip0 addr 0xb000100-0xb00011f intr 8
button0 at vrgiu0 port=6 id=1 active=low sense=edge
button1 at vrgiu0 port=7 id=2 active=low sense=edge
button2 at vrgiu0 port=8 id=9 active=low sense=edge
button3 at vrgiu0 port=9 id=10 active=low sense=edge
button4 at vrgiu0 port=10 id=11 active=low sense=edge
button5 at vrgiu0 port=11 id=12 active=low sense=edge
button6 at vrgiu0 port=12 id=4 active=low sense=edge
button7 at vrgiu0 port=13 id=3 active=low sense=edge
vrbcu0 at vrip0 addr 0xb000000-0xb00001f
vrbcu: cpu 69.391MHz, bus 23.130MHz, ram 23.130MHz
com0 at vrip0 addr 0xc000000-0xc000007 intr 9: ns16550a, working fifo
com0: console
vrrtc0 at vrip0 addr 0xb0000c0-0xb0000df intr 2
vrkiu0 at vrip0 addr 0xb000180-0xb00019f intr 7
wskbd0 at vrkiu0 mux 1
vrpmu0 at vrip0 addr 0xb0000a0-0xb0000bf intr 1
vrdsu0 at vrip0 addr 0xb0000e0-0xb0000e7
vrpiu0 at vrip0 addr 0xb000120-0xb0002bf intr 5
wsmouse0 at vrpiu0 mux 0
vrisab4 at vrgiu0:ISA port 0x1400c000-0x18000000 mem 0x10000000-0x20000000
isa4 at vrisab4
wdc0 at isa4 port 0x170-0x177 irq 33554435
wd0 at wdc0 channel 0 drive 0: <SanDisk SDCFB-64>
wd0: drive supports 1-sector pio transfers, lba addressing
wd0: 62720 KB, 490 cyl, 8 head, 32 sec, 512 bytes/sect x 125440 sectors
btnmgr0 at mainbus0
wskbd1 at btnmgr0 mux 1
../../../../arch/hpcmips/vr/vr.c(294): vr_bus_reset() not implemented.
boot device: wd0
root on wd0a dumps on wd0b
WARNING: preposterous clock chip time
 -- CHECK AND RESET THE DATE!
root file system type: ffs

--
ふかうみ なおき
naoki@fukaumi.org