金子邦彦研究室プログラミング68000アセンブラ(スライド資料,演習問題)Linux 上に 68000 環境を作る

Linux 上に 68000 環境を作る

2004年12月20日

はじめに

このWebページでは,68000アセンブラの実験環境を,Linux 上に作る方法を解説している. OSとしては,FreeBSD を使う場合には、「FreeBSD 上で 68000 アセンブラの実験環境を作る Web ページ」を見て下さい。

このWebページに記載されている内容や,この Web ページを使ってダウンロー ドしたプログラムの使用によって生じたいかなる結果に対しても,Web ページ の作者は責任を負いません.利用は個人の責任において行ってください

このページで説明している.こと

68000 開発環境(クロスコンパイラと RTEMS)、68000エミュレータ、その他の基本 的なソフトのインストール手順を説明している.

Linux のインストール

Linux のインストール、 Windowsなど他のOSとの 共存については Linux に関するドキュメント,サイト,書籍等を参考にして 個人の責任において行ってください.

インストール時の注意点

「パッケージファイル」を使って、最小限のソフトをインストール

最初に行なうことは、次のソフトがインストールされているかを調べ、 もしインストールされていなければ、「パッケージファイル」を使って、インストールする.

すでにインストール済みかを調べる

LINUX のインストール時に自動でインストールされるものがあるので、まず、 インストールされているかを調べます.

インストールされているかを調べるには、 次のように、「rpm -qi expat」のように「rpm -qi <パッケージ名>」を実行する.

LANG=C
rpm -qi flex
rpm -qi bison
rpm -qi libiconv
rpm -qi gcc
rpm -qi rpmbuild
rpm -qi perl

「パッケージファイル」によるインストールを行なう

調べた結果、インストールされていないものがあったら、 「パッケージファイル」を探してきて、手動でインストールする.

必要な 「パッケージファイル」は http://fr2.rpmfind.net/linux/RPM/index.html などで探して、ダウンロード. その後、「rpm -i <パッケージファイル名>」でインストールするという手順である.

いちいち、マウスをクリックしたりするのが面倒なので、次のようなシェルス クリプトを作って実行させることにした。 これは、RedHat バージョン9 用です. もし他の linux で使う時は、 DOWNLOAD_URL_RPM_1, DOWNLOAD_URL_RPM_LIBICONV, MYRPM_FLEX, MYRPM_BISON, MYRPM_LIBICONV, MYRPM_GCC, MYRPM_RPMBUILD, MYRPM_PERL を適切に設定して下さい。

#
# 設定
#

# RedHat Linux 9 用の設定です
# DOWNLOAD_URL_RPM_1, DOWNLOAD_URL_RPM_LIBICONV, MYRPM_FLEX, MYRPM_BISON,
# MYRPM_LIBICONV, MYRPM_GCC, MYRPM_RPMBUILD, MYRPM_PERL を適切に設定して下さい。残りはそのままでも動くと思います
#     DOWNLOAD_URL_RPM_1, DOWNLOAD_URL_RPM_LIBICONV: RPM のダウンロード先

DOWNLOAD_URL_RPM_1=https://www.kkaneko.jp/computer/linux/redhat/9/en/os/i386/RedHat/RPMS
DOWNLOAD_URL_RPM_LIBICONV=https://www.kkaneko.jp/computer/linux/redhat/9/en/os/i386/RedHat/RPMS
# DOWNLOAD_URL_RPM_1=ftp://fr2.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS
# DOWNLOAD_URL_RPM_LIBICONV=http://www.samba.gr.jp/pub/samba-3.0-ja/RPMS/RedHat9/LIBICONV/

MYRPM_FLEX=flex-2.5.4a-29.i386.rpm
MYRPM_BISON=bison-1.35-6.i386.rpm
MYRPM_LIBICONV=libiconv-1.8-1.i386.rpm
MYRPM_GCC=gcc-3.2.2-5.i386.rpm
MYRPM_RPMBUILD=rpm-build-4.2-0.69.i386.rpm
MYRPM_PERL=perl-5.8.0-88.i386.rpm

#
# 作業手順 
#

LANG=C
cd /tmp

# RPM ファイルをダウンロード
wget -S --passive-ftp $DOWNLOAD_URL_RPM_1/$MYRPM_FLEX
wget -S --passive-ftp $DOWNLOAD_URL_RPM_1/$MYRPM_BISON
wget -S --passive-ftp $DOWNLOAD_URL_RPM_LIBICONV/$MYRPM_LIBICONV
wget -S --passive-ftp $DOWNLOAD_URL_RPM_1/$MYRPM_GCC
wget -S --passive-ftp $DOWNLOAD_URL_RPM_1/$MYRPM_RPMBUILD
wget -S --passive-ftp $DOWNLOAD_URL_RPM_1/$MYRPM_PERL

# rpm -i でインストール
rpm -i $MYRPM_FLEX
rpm -i $MYRPM_BISON
rpm -i $MYRPM_LIBICONV
rpm -i $MYRPM_GCC
rpm -i $MYRPM_RPMBUILD
rpm -i $MYRPM_PERL

補足説明: 「パッケージファイル」について

ソフトが、インストールされていないとき、新たにインストールするために 「パッケージファイルを探してきて、適当なディレクトリにダウンロード」というのが一般的な手順である.

checkinstall のインストール

次に、checkinstall をインストールする. checkinstall は、tarball から RPM パッケージを作ってくれるソフトです. 今後、わざわざ、自分の Linux バージョンに合致した RPMファイルを探して こなくても、「ソースファイルをダウンロード、コンパイルし、その後 RPM ファイルを作成して, インストールを行なう」ということができるようにします.

なお、checkinstall の動作には rpm-build が必要なので、もし、 checkinstall の動作がおかしかったら、「rpm -qi rpm-build」でインストー ル済みかどうかを確認してみましょう。

関連する外部ページ】 : http://www.atmarkit.co.jp/flinux/rensai/linuxtips/530mkrpmfs.html

ダウンロード

下記のサイトより checkinstall-1.5.3.tgz をダウンロード

https://asic-linux.com.mx/~izto/checkinstall/download.php

インストール

以下の手順でインストール

cd /tmp
rm -rf checkinstall-1.5.3
gtar -xvzof checkinstall-1.5.3.tgz
cd /tmp/checkinstall-1.5.3
make
make install
checkinstall -R -y

checkinstall の使い方の例

checkinstall を使って、pkgconfig をインストールしてみました。

-----------------------------------------------------------------------
# tar -xvzf pkgconfig-0.15.0.tar.gz
# cd pkgconfig-0.15.0
# ./configure
# make
# checkinstall

   (省略)
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]: y

   (省略)
Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R

Please write a description for the package.
End your description with an empty line or EOF.
>>

This package will be built according to these values:

1 -  Summary: [ Package created with checkinstall 1.5.3 ]
2 -  Name:    [ pkgconfig ]
3 -  Version: [ 0.15.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ pkgconfig-0.15.0 ]
9 -  Alternate source location: [  ]
10 - Provides: [ pkgconfig ]

Enter a number to change any of them or press ENTER to continue:
Enter キーを押す

   (省略)
**********************************************************************

 Done. The new package has been installed and saved to
 /usr/src/redhat/RPMS/i386/pkgconfig-0.15.0-1.i386.rpm

 You can remove it from your system anytime using:

      rpm -e pkgconfig-0.15.0-1

**********************************************************************

# rpm -qi pkgconfig
Name        : pkgconfig                    Relocations: (not relocateable)
Version     : 0.15.0                            Vendor: (none)
Release     : 1                             Build Date: 2004年12月15日 11時20分08秒
Install Date: 2004年12月15日 11時20分09秒      Build Host: testlinux.db.is.kyushu-u.ac.jp
Group       : 開発/ツール                   Source RPM: pkgconfig-0.15.0-1.src.rpm
Size        : 136595                           License: GPL
mSignature   : (none)
Packager    : checkinstall-1.5.3
Summary     : コンパイルオプションを決定するツール
Description :
pkgconfig ツールはコンパイルオプションを決定します.必須の各ライブラリについて、
設定ファイルを読み込み、必要なコンパイラフラグとリンカフラグ
を出力します.
-----------------------------------------------------------------------

(注)
# checkinstall
でインストールできるのは、
# make install
コマンドでインストールするようなソフトです.
# make install_packages
など、別のコマンドが指定されている場合は、
# checkinstall make install_packages
などとします.
(README 参照)

各種ツール, ライブラリの整備

次に、各種ツール, ライブラリの整備を行なっていきます. 「パッケージファイル」を使ってインストールできるが(その手順は後述)、 「パッケージファイル」を探すのが面倒という理由で、 ソースファイルをダウンロード、コンパイルし、checkinstall を使っ てインストール という手順の方を先に説明しておきます(最新版が簡単にインストールできる). 「パッケージファイル」からのインストールについては、この後の補足説明をみて下さい。

次のようなシェルス クリプトを作って実行させることにした。 これは、RedHat バージョン9 で動作確認しました。他の Linux では、 変数 ARCH を適切に設定するだけで、そのまま動くと思います.

(お断り) ここに記載のシェルスクリプト(ソースファイルをダウンロードし、コンパイル)をそのまま実行すると「Web ブラウザが起動できなくなる」などの症状が報告されている. そうした症状に対処できる自信(時間的余裕)がない場合には、 補足説明の方の「 どうしても「パッケージファイル」からインストールしたいときの手順」をお勧めしておきます.

#
# 設定
#

# 変数 ARCH を適切に設定してください

LANG=C
ARCH=i686-pc-linux-gnu
#ARCH=i386-redhat-linux

# ソースファイルのダウンロード先、ソースファイル名を指定している.

DOWNLOAD_URL_SRC=https://www.kkaneko.jp/computer/src/toollib
DOWNLOAD_URL_GNU_SRC=https://www.kkaneko.jp/computer/src/gnu

MYSRC_GNU1=" \
flex-2.5.4a.tar.gz \
gcc-core-3.4.3.tar.gz \
gcc-3.4.3.tar.gz \
emacs-21.3.tar.gz \
leim-21.3.tar.gz"

MYSRC_GNU2=" \
bison-1.875d.tar.gz \
libiconv-1.9.2.tar.gz \
m4-1.4.2.tar.gz \
automake-1.9.2.tar.gz \
autoconf-2.59.tar.gz \
binutils-2.15.tar.gz \
gettext-0.14.1.tar.gz \
libtool-1.5.10.tar.gz \
make-3.80.tar.gz \
patch-2.5.4.tar.gz \
texinfo-4.7.tar.gz \
readline-5.0.tar.gz \
gdb-5.2.1.tar.gz"

MYSRC_BASE=" \
expat-1.95.8.tar.gz \
freetype-2.1.9.tar.gz \
newlib-1.12.0.tar.gz"

MYSRC_BASE2=" \
fontconfig-2.2.3.tar.gz \
tcl-8.4.6.tar.gz \
tk-8.4.6.tar.gz"

# libgcj-3.4.3 rpmbuild

#
# 作業手順 
#

cd /tmp

# Download Source Files
echo Download...
for i in `echo $MYSRC_GNU1`;
  do ( wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/$i );
done
for i in `echo $MYSRC_GNU2`;
  do ( wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/$i );
done
for i in `echo $MYSRC_BASE`;
  do ( wget -S --passive-ftp $DOWNLOAD_URL_SRC/$i );
done
for i in `echo $MYSRC_BASE2`;
  do ( wget -S --passive-ftp $DOWNLOAD_URL_SRC/$i );
done

# Install
cd /tmp

# flex
cd /tmp
rm -rf flex-2.5.4
tar -xvzf flex-2.5.4a.tar.gz
cd flex-2.5.4
./configure
make
/usr/local/sbin/checkinstall -R -y

# gcc-core
cd /tmp
rm -rf gcc-3.4.3
tar -xvzf gcc-core-3.4.3.tar.gz
cd gcc-3.4.3
./configure --prefix=/usr/local --enable-languages="c" --mandir=/usr/local/share/man --infodir=/usr/local/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=$ARCH
make bootstrap
checkinstall -R -y

# gcc
cd /tmp
rm -rf gcc-3.4.3
tar -xvzf gcc-3.4.3.tar.gz
cd gcc-3.4.3
./configure --prefix=/usr/local --enable-languages="c,c++" --mandir=/usr/local/share/man --infodir=/usr/local/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=$ARCH
make bootstrap
checkinstall -R -y

# emacs, leim
cd /tmp
rm -rf emacs-21.3
gtar -xvzf emacs-21.3.tar.gz
gtar -xvzf leim-21.3.tar.gz
cd emacs-21.3
./configure  --with-gcc --with-mule --with-xll --with-site-lisp --with-xfs  --with-xim  --with-xpm --with-jpeg --with-tiff --with-giff --with-png
make
checkinstall -R -y

# other GNU softwares
cd /tmp
for i in `echo $MYSRC_GNU2`;
  do ( rm -rf /tmp/`basename $i .tar.gz`; tar -xvzf $i; \
    cd /tmp/`basename $i .tar.gz`; \
    ./configure; \
    make; \
    /usr/local/sbin/checkinstall -R -y ); 
done

# other basic softwares
cd /tmp
for i in `echo $MYSRC_BASE`;
  do ( rm -rf /tmp/`basename $i .tar.gz`; tar -xvzf $i; \
    cd /tmp/`basename $i .tar.gz`; \
    ./configure; \
    make; \
    /usr/local/sbin/checkinstall -R -y ); 
done

# fontconfig-2.2.3.tar.gz
cd /tmp
rm -rf fontconfig-2.2.3
tar -xvzf fontconfig-2.2.3.tar.gz
cd fontconfig-2.2.3
./configure
make
echo "all:" > doc/Makefile
echo "    echo " >> doc/Makefile
echo "install:" >> doc/Makefile
echo "    echo " >> doc/Makefile
/usr/local/sbin/checkinstall -R -y

# tcl-8.4.6.tar.gz
cd /tmp
rm -rf cd tcl8.4.6
tar -xvzf tcl-8.4.6.tar.gz
cd tcl8.4.6
cd unix
./configure
make
cd ..
mv unix tcl-8.4.6
ln -s tcl-8.4.6 unix
cd tcl-8.4.6
/usr/local/sbin/checkinstall -R -y

# tk-8.4.6.tar.gz
cd /tmp
rm -rf tk8.4.6
tar -xvzf tk-8.4.6.tar.gz
cd tk8.4.6
cd unix
./configure
make
cd ..
mv unix tk-8.4.6
ln -s tk-8.4.6 unix
cd tk-8.4.6
/usr/local/sbin/checkinstall -R -y

何台もインストールしたい」という場合について。 1台目のインストール を終えた時に /usr/src/redhat/RPMS/i386 というような名前のディレクトリ に RPM 形式の「パッケージファイル」ができているので、ここにある 「パッ ケージファイル」を、2台目以降 のコンピュータにコピーして、「rpm -i <「パッケージファイル名」>」という 手順になる.

補足説明: どうしても「パッケージファイル」からインストールしたいときの手順

ここでは、各種ツール, ライブラリを、「パッケージファイル」からインストー ルする手順を説明している. すでに、上記の手順でインストールが済んでいるなら、ここは飛ばして、 「CPU シミュレータ bsvc」に進んで下さい。

すでに手元に「パッケージファイル」がある、というようなときは、上記の手 順では無くて、「パッケージファイル」からインストールしてもよいでしょう。

すでにインストール済みかを調べる

LINUX のインストール時に自動でインストールされるものがあるので、まず、インストールされているかを調べ、 インストールされていなければ、手動でインストールするという手順を踏みます.

インストールされているかを調べるには、 「rpm -qi expat」のように「rpm -qi <パッケージ名>」を実行します

「パッケージファイル」をダウンロードし、インストール

「パッケージファイル」を使ったインストールの手順を説明する. RPM ファイルを探して、 ダウンロードし、 「rpm -i <パッケージファイル名>」でインストールするという手順になる.

freetype, fontconfig, libgcj, rpm, m4, emacs, emacs-el, emacs-leim, automake, autoconf, binutils, gettext, libtool, make, texinfo, gdb, perl, tcl, tk については、 http://fr2.rpmfind.net/linux/RPM/index.htmlなどで、 簡単に見つかります。 これ以外のソフトについては、ソースファイルからコンパイルすることになり ます(該当は newlib)。

これも、次のようなシェルス クリプトを作って実行させることにした。 これは、RedHat バージョン9 用です. もし他の linux で使う時は、 DOWNLOAD_URL_RPM_2, MYRPM_SOFT2 を適切に設定して下さい。

#
# 設定
#

# RedHat Linux 9 用の設定です
# DOWNLOAD_URL_RPM_2, MYRPM_SOFT2 を適切に設定して下さい。残りはそのままでも動くと思います
#     DOWNLOAD_URL_RPM_22: RPM のダウンロード先
#     MYRPM_SOFT2 : インストールしたい RPM のリスト

# RedHat Linux 9 用
DOWNLOAD_URL_RPM_2=https://www.kkaneko.jp/computer/linux/redhat/9/en/os/i386/RedHat/RPMS
# DOWNLOAD_URL_RPM_2=ftp://fr2.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS

MYRPM_SOFT2="expat-1.95.5-2.i386.rpm \
freetype-2.1.3-6.i386.rpm \
fontconfig-2.1-9.i386.rpm \
libgcj-3.2.2-5.i386.rpm \
rpm-4.2-0.69.i386.rpm \
m4-1.4.1-13.i386.rpm \
emacs-21.2-33.i386.rpm \
emacs-el-21.2-33.i386.rpm \
emacs-leim-21.2-33.i386.rpm \
automake-1.6.3-5.noarch.rpm \
autoconf-2.57-3.noarch.rpm \
binutils-2.13.90.0.18-9.i386.rpm \
gettext-0.11.4-7.i386.rpm \
libtool-1.4.3-5.i386.rpm \
make-3.79.1-17.i386.rpm \
patch-2.5.4-16.i386.rpm \
texinfo-4.3-5.i386.rpm \
gdb-5.3post-0.20021129.18.i386.rpm \
perl-5.8.0-88.i386.rpm \
tcl-8.3.5-88.i386.rpm \
tk-8.3.5-88.i386.rpm"

#
# 作業手順 
#

LANG=C
cd /tmp

# RPM ファイルをダウンロード
echo Download...
for i in `echo $MYRPM_SOFT2`;
  do ( wget -S --passive-ftp $DOWNLOAD_URL_RPM_2/$i );
done

# インストール済のソフトを確認
for i in `echo $MYRPM_SOFT2`;
  do ( rpm -qi `basename $i .i386.rpm` | grep "Name" | awk '{print $3}'; rpm -qi `basename $i .i386.rpm` | grep   "Version" | awk '{print "  " $3}' );
done

# rpm -i でインストール
echo Install...
for i in `echo $MYRPM_SOFT2`;
# rpm -i でインストール
  do ( rpm -i $i )
done

newlib をソースファイルからコンパイル、インストール

残りの作業は、newlib のインストールです.

これらは、RedHat Linux 9 の「パッケージファイル」が無かったので、 ソースファイルをダウンロード、コンパイルし、checkinstall を使ってインストールし ます.

これも、次のようなシェルス クリプトを作って実行させることにした。 これは、RedHat バージョン9 で動作確認しました。他の Linux でも、そのま ま動くと思います.

#
# 設定
#

# ソースファイルのダウンロード先、ソースファイル名を指定している.
# 問題が無ければ、このままで良いでしょう。

DOWNLOAD_URL_SRC=https://www.kkaneko.jp/computer/src/toollib
# DOWNLOAD_URL_GNU_SRC=https://www.kkaneko.jp/computer/src/gnu
MYSRC_NEWLIB="newlib-1.12.0.tar.gz "

#
# 作業手順 
#

LANG=C
cd /tmp

# ソースファイルをダウンロード
wget -S --passive-ftp $DOWNLOAD_URL_SRC/$MYSRC_NEWLIB

# インストール済のソフトを確認
rpm -qi `basename $MYSRC_NEWLIB .tar.gz`    | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYSRC_NEWLIB .tar.gz`    | grep   "Version" | awk '{print "  " $3}'

# インストール
cd /tmp
rm -rf `basename $MYSRC_NEWLIB .tar.gz`
tar -xvzf $MYSRC_NEWLIB
cd `basename $MYSRC_NEWLIB .tar.gz`
./configure
./etc/configure
make
/usr/local/sbin/checkinstall -R -y

68000 クロス開発環境

次に、GNU binutils, gcc, newlib, gdb を使って、68000 クロス開 発環境を作りま す。 binutils, gcc, newlib, gdb の順でインストールする. configure のオプションは、「./configure --prefix=/usr/local --target=m68k-coff」のようにして、その後、make, make install します.

DOWNLOAD_URL_GNU_SRC=https://www.kkaneko.jp/computer/src/gnu

# binutils-2.15.tar.gz
cd /tmp
wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/binutils-2.15.tar.gz
rm -rf binutils-2.15
tar -xvzf binutils-2.15.tar.gz
cd binutils-2.15
./configure --prefix=/usr/local --target=m68k-coff
make
make install

# gcc-core-3.4.3.tar.gz
cd /tmp
wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/gcc-core-3.4.3.tar.gz
rm -rf gcc-3.4.3
tar -xvzf gcc-core-3.4.3.tar.gz
cd gcc-3.4.3
./configure --prefix=/usr/local --enable-languages="c" --target=m68k-coff
make
make install

# gcc-core-2.95.3.tar.gz
cd /tmp
wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/gcc-core-2.95.3.tar.gz
rm -rf gcc-2.95.3
tar -xvzf gcc-core-2.95.3.tar.gz
cd gcc-2.95.3
./configure --prefix=/usr/local --enable-languages="c" --target=m68k-coff m68k-coff
make
make install

# newlib-1.9.0.tar.gz
cd /tmp
wget -S --passive-ftp ftp://ftp.u-aizu.ac.jp/pub/gnu/cygnus/newlib/newlib-1.9.0.tar.gz
rm -rf newlib-1.9.0
rm -rf newlib-m68k
tar -xvzf newlib-1.9.0.tar.gz
mkdir newlib-m68k
cd newlib-m68k
../newlib-1.9.0/configure --prefix=/usr/local --target=m68k-coff
make
make install

# gdb-5.2.1.tar.gz
cd /tmp
wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/gdb-5.2.1.tar.gz
rm -rf gdb-5.2.1
tar -xvzf gdb-5.2.1.tar.gz
cd gdb-5.2.1
./configure --prefix=/usr/local --target=m68k-coff
make
make install

# binutils-2.15.tar.gz
cd /tmp
wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/binutils-2.15.tar.gz
rm -rf binutils-2.15
tar -xvzf binutils-2.15.tar.gz
cd binutils-2.15
./configure --prefix=/usr/local --target=m68k-coff --with-headers=../newlib-1.9.0/newlib/libc/include --with-newlib
make
make install

# gcc-3.4.3.tar.gz with newlib
# これは未チェック
cd /tmp
# wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/gcc-core-3.4.3.tar.gz
rm -rf gcc-3.4.3
tar -xvzf gcc-core-3.4.3.tar.gz
cd gcc-3.4.3
./configure --prefix=/usr/local --enable-languages="c" --target=m68k-coff --with-headers=../newlib-1.9.0/newlib/libc/include --with-newlib
make
make install

# gcc-2.95.3.tar.gz with newlib
# これは未チェック
cd /tmp
# wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/gcc-core-2.95.3.tar.gz
rm -rf gcc-2.95.3
tar -xvzf gcc-core-2.95.3.tar.gz
cd gcc-2.95.3
./configure --prefix=/usr/local --enable-languages="c" --target=m68k-coff --with-headers=../newlib-1.9.0/newlib/libc/include --with-newlib
make
make install

68000 開発環境 RTEMS

68000 開発環境として RTEMS をインストールする. これは、RPM ファイルを ダウンロードし、 「rpm -i <パッケージファイル名>」でインストールするという手順になる.

上記サイトより以下のファイルをダウンロードして、インストールすることに なる.

rtems-4.6-apt-conf-0.0-0.noarch.rpm
rtems-4.6-autoconf-rtems-2.59-0.noarch.rpm
rtems-4.6-automake-rtems-1.7.2-2.noarch.rpm
rtems-4.6-rtems-base-binutils-2.13.2.1-2.i686.rpm
rtems-4.6-m68k-rtems-binutils-2.13.2.1-2.i686.rpm
rtems-4.6-rtems-base-gcc-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-m68k-rtems-gcc-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-m68k-rtems-c++-gcc3.2.3newlib1.11.0-4.i686.rpm
rtems-4.6-rtems-base-gdb-5.2-1.i686.rpm
rtems-4.6-m68k-rtems-gdb-5.2-1.i686.rpm

手順

インストールの手順は、次のようになる.

CPU シミュレータ bsvc

CPU シミュレータ bsvc をインストールする. ソースファイルをダウンロード、コンパイルし、checkinstall を使ってインストールする.

インストール上の注意点

RedHat 9 では、bsvc のソースファイルは、そのままではコンパイル できません。変更が3箇所あります.

インストール手順

bsvc をコンパイルするのに、gcc バージョン3 よりも gcc バージョン 2 の 方が便利のようなので、下記の手順で、gcc バージョン3 を消して、 gcc バージョ ン 2 をインストールしている.

#
# 設定
#

# ソースファイルのダウンロード先、ソースファイル名を指定している.
# 問題が無ければ、このままで良いでしょう。

DOWNLOAD_URL_JIKKEN_SRC=https://www.kkaneko.jp/~kaneko/as/jikken/src
MYSRC_BSVC=bsvc-2.1-src.tar.gz

DOWNLOAD_URL_GNU_SRC=https://www.kkaneko.jp/pub/FreeBSD/ports/distfiles
MYSRC_GCC2=gcc-2.95.3.tar.bz2


#
# 作業手順 
#

LANG=C
ARCH=i686-pc-linux-gnu
#ARCH=i386-redhat-linux
cd /tmp

# ソースファイルをダウンロード
wget -S --passive-ftp $DOWNLOAD_URL_JIKKEN_SRC/$MYSRC_BSVC
wget -S --passive-ftp $DOWNLOAD_URL_GNU_SRC/$MYSRC_GCC2

# インストール済のソフトを確認
rpm -qi `basename $MYSRC_BSVC .tar.gz`    | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYSRC_BSVC .tar.gz`    | grep   "Version" | awk '{print "  " $3}'
rpm -qi `basename $MYSRC_GCC2 .tar.gz`    | grep "Name" | awk '{print $3}'
rpm -qi `basename $MYSRC_GCC2 .tar.gz`    | grep   "Version" | awk '{print "  " $3}'

# gcc-2.95.3 インストール
cd /tmp
rm -rf `basename $MYSRC_GCC2 .tar.bz2`
tar -xvjf $MYSRC_GCC2
cd `basename $MYSRC_GCC2 .tar.bz2`
./configure --prefix=/usr/local --enable-languages="c,c++" \
    --mandir=/usr/local/share/man --infodir=/usr/local/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=$ARCH
cd `basename $MYSRC_GCC2 .tar.bz2`/texinfo
make
cd `basename $MYSRC_GCC2 .tar.bz2`;
make bootstrap
checkinstall -R -y

#
# bsvc インストール
#

# (1) Makefile.common
cd /usr/local
rm -rf `basename $MYSRC_BSVC -src.tar.gz`
tar -xvzf /tmp/$MYSRC_BSVC
ln -s `basename $MYSRC_BSVC -src.tar.gz` bsvc
cd bsvc/src
cat Makefile.common | sed’s/\/home\/bwmott\//projects\/bsvc\/development\/bsvc/\/
usr\/local\/bsvc/g' > /tmp/a
cp /tmp/a Makefile.common

# Redhat Linux では
# /usr/local/bsvc/src/Tools/xtermpipe/xtermpipe.cxx中の(void*)を外し,
# /usr/local/bsvc/src/sim68000/devices/M68681.cxx
# /usr/local/bsvc/src/sim68360/devices/M68681.cxx
# 中にextern "C" {int kill(pid_t pid, int sig);};を入れる.

# このままでは,/usr/local/bin/sim68000はないため,
# /usr/local/bsvc/src/Makefile.commonを開き,
# INSTALL_DIR= /usr/local/bin とし,sim68000のインストール先を変更する.

cd /usr/local/bsvc/src
make PROJECT_BASE=/usr/local/bsvc

cd /usr/local/bsvc-2.1/src
checkinstall -R -y make PROJECT_BASE=/usr/local/bsvc install

# ここで,/usr/local/bin/sim68000を実行しても,以下のエラー文が表示される.
#  /usr/local/bin/sim68000/: error while loading shared libraries: libstdc++-lib6.3-2.so.3: cannot open shared object file: No such file or Directory
#  libstdc++-lib6.3-2.so.3があるディレクトリは,/usr/local/libである.そこで,
#  /etc/ld.so.confに,/usr/local/libを最初の行に追加して再起動する.
# さらに,ln -s /usr/local/lib/libstdc++-lib6.3-2.so.3 /usr/lib として,シンボリックリンクを張る.

# 再度,/usr/local/bin/sim68000を実行すると,READYと表示されるはずである.

動作確認

動作確認します./usr/local/bin/sim68000 を実行して、エラーが発生しないことを確認します.

/usr/local/bin/sim68000

エラーが出たら、/etc/ld.so.conf の設定が正しいかを確認するなど、適切な 処置を行なって下さい。

専用ファイルのインストール

68000 アセンブラプログラムをエミュレータで動作させるために専用 のスクリプトファイルを用意している. これらのファイルをインストールすることによって, m68k-asとm68k-emu 命令が使えるようになる. 各自の責任でお使い下さい.

m68k-5.0.tgz を入手します
# cd ~/
# tar zxvfp m68k-5.0.tgz

次にインストールを実行する.

cd m68k-5.0
./install.sh
/usr/local/bin/bin のファイル(もしあれば)を /usr/local/bin にコピーし直す

このスクリプトはlib以下を/usr/local/lib に,bin以下を/usr/local/binにコピーします. xterm(kterm)のウィンドウを開きなおしてm68k-as,m68k-emuが実行できることを確認します.

次に /usr/loca/bin/m68k-emu ファイルを開き、 exec wish8.0jp -f/usr/local/bin/bsvc/bsvc.tk と表記されている部分を、環境にあわせて適切に(exec wish -f/usr/local/bin/UI/bsvc.tkのように)変更する

/usr/local/bin/m68k-asファイルを開き,

#GLD=$PREFIX/m68k-coff-ld
#GAS=$PREFIX/m68k-coff-as
GLD=$PREFIX/m68k-rtems-ld
GAS=$PREFIX/m68k-rtems-as

と表記されている部分を,

GLD=$PREFIX/m68k-coff-ld
GAS=$PREFIX/m68k-coff-as
#GLD=$PREFIX/m68k-rtems-ld
#GAS=$PREFIX/m68k-rtems-as
と変更する.