LinuxのMinGWでMonaをコンパイル


LinuxのMinGWでMonaをコンパイル

とりあえずできました。恐らくFreeBSD等のLinux以外のOSでもできると思います。以外にあっさり逝っちゃった。

証拠写真

mona-lxmingw.png

2004-10-05にパッチがソースツリーに取りこまれました。感謝。

こめんと

コメントはありません。 コメント/LinuxのMinGWでMonaをコンパイル?

お名前:

MinGW導入方法

ダウンロード

$ mkdir /tmp/mingw-temp
$ cd /tmp/mingw-temp

http://sourceforge.net/projects/mingw/あたりからファイルを落としてきます。最低限必要なファイル

準備

以下,MinGWを/usr/local/mingw32ディレクトリにインストールすると仮定します。

$ sudo mkdir /usr/local/mingw32
$ sudo tar xzvf mingw-runtime-3.5.tar.gz -C /usr/local/mingw32
$ sudo tar xzvf w32api-3.1.tar.gz -C /usr/local/mingw32
$ tar xzvf binutils-2.13.90-20030111-1-src.tar.gz
$ tar xzvf gcc-core-3.3.1-20030804-1.src.tar.gz
$ tar xzvf gcc-g++-3.3.1-20030804-1.src.tar.gz
$ tar xzvf mingw-runtime-3.5-src.tar.gz
$ tar xzvf w32api-3.1-src.tar.gz
$ ln -s binutils-2.13.90-2003011-1 binutils
$ ln -s gcc-3.3.1-20030804-1 gcc
$ ln -s mingw-runtime-3.5 runtime
$ ln -s w32api-3.1 w32api
$ mkdir bld
$ cd bld
$ mkdir binutils gcc runtime w32api

binutilsのコンパイル

$ cd binutils
$ ../../binutils/configure --prefix=/usr/local/mingw32 --target=i386-mingw32 -v
$ make
$ sudo make install
$ cd ..

パスを通す

忘れずに。ただしMinGWインストール作業が終った後は必ずしもパスが通っている必要はありません。

$ export PATH=/usr/local/mingw32/bin:$PATH

gccのコンパイル

$ cd gcc
$ ../../gcc/configure --prefix=/usr/local/mingw32 --target=i386-mingw32 -v
$ make

↓こんなかんじのエラーがでても気にしない。

checking whether the C compiler ( /tmp/mingw-temp/bld/gcc/gcc/xgcc 
-B/tmp/mingw-temp/bld/gcc/gcc/ -B/usr/local/mingw32/i386-mingw32 
/bin/ -B/usr/local/mingw32/i386-mingw32/lib/ -isystem 
/usr/local/mingw32/i386-mingw32/include -O2 -g -O2 ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.
make: *** [configure-target-libiberty] エラー 1
$ sudo make install

要はC++コンパイラが入っていればいいのだ。

$ i386-mingw32-g++ 
i386-mingw32-g++: no input files

↑こうなれば成功。

$ cd ..

make install後にln -s /usr/local/mingw32/lib/* /usr/local/mingw32/i386-mingw32/lib/してもう一度make&&make installするとlibstdc++.aが使えるようになります。(もっとまともな方法があるはず)

mingw-runtimeのコンパイル (必要ないかも)

$ cd  runtime
$ AS=i386-mingw32-as  CC=i386-mingw32-gcc  AR=i386-mingw32-ar \ 
RANLIB=i386-mingw32-ranlib  LD=i386-mingw32-ld  \
DLLTOOL=i386-mingw32-dlltool  WINDRES=i386-mingw32-windres ../../runtime/configure --prefix=/usr/local/mingw32 --target=i386-mingw32 -v
$ make
$ sudo make install
$ cd ..

w32apiのコンパイル (必要ないかも)

$ cd w32api
$  AS=i386-mingw32-as CC=i386-mingw32-gcc  AR=i386-mingw32-ar  \
RANLIB=i386-mingw32-ranlib  LD=i386-mingw32-ld  \
DLLTOOL=i386-mingw32-dlltool WINDRES=i386-mingw32-windres ../../w32api/configure --prefix=/usr/local/mingw32 --target=i386-mingw32 -v
$ make

(記憶が正しければここでエラーがでるがMakefileのちょっとした修正で解決できる。)

$ sudo make install
$ cd ..

NASMのインストール

大抵のディストリビューションでは

$ sudo apt-get install nasm

で入ると思う。そうでない人は http://sourceforge.net/projects/nasm からバイナリもしくはソースをダウンロード

仕上げ

$ sudo strip /usr/local/mingw32/bin/* /usr/local/mingw32/i386-mingw32/bin/*
strip: /usr/local/mingw32/bin/i386-mingw32-gccbug: ファイル形式が認識できません

↑このエラーは問題無し。

$ sudo i386-mingw32-strip /usr/local/mingw32/lib/*.o
$ cd
$ rm -rf /tmp/mingw-temp

以上で完了です。間違っているところがあったら気がついた人,修正の方よろしくおねがいします。

参考

コンパイル方法

Mona.tar.gzをダウンロード。

$ tar xzvf Mona.tar.gz
$ cd Mona



あとは

$ make depend && make && make install

で, bin/mona.imgが生成されます。

$ qemu -fda bin/mona.img -localtime

でQEMUでの実行(もちろんQEMUがインストールされていればの話),

$ cat bin/mona.img > /dev/fd0 

で起動フロッピーの作成ができます。

MENU

now: 2

リンク


最新の20件
2019-07-30 2019-06-20 2019-06-19 2019-03-24 2019-02-26 2018-10-07 2018-09-20 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 8385, today: 2, yesterday: 0

添付ファイル: filemona-uxmingw-2.diff 384件 [詳細] filemona-lxmingw.png 866件 [詳細] filemona-lxmingw.diff 390件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:54 (4194d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.063 sec.