ページへ戻る

+ Links

 印刷 

OSASK_bin_on_Linux(old) :: OSASK計画

osaskwiki:OSASK_bin_on_Linux(old)

このページの内容は整理前の「Linux上でOSASK用バイナリを生成しよう」のものです。

  • すべてはこのページでのwqさんのがんばりから始まったのです。ということであっけなく消されてしまうには忍びないので、ここで復活。
Page Top

概要

ここではC言語で書かれたプログラムをLinux上でクロスコンパイルし
OSASK用の実行ファイルを生成する為の環境を構築する手順を説明します。
Solarisや*BSD等、他のUNIX系OSでも同様の手順で上手く行くと思いますが、
確かめてはいません。(おそらくgcc,make,patchあたりが使えれば大丈夫だと思います。)
クロスコンパイルに必要なものは make, cc1, gas2nask, nask, obj2bim3, bim2bin3
の6個のプログラムです。このうちmakeはLinuxに最初からインストールされている
ものを使えば良いのですが、他のものは以下の手順に従って揃えて下さい。

なお私の使った主なプログラムのバージョンは次の通りです。

  • lha 1.14g
  • gcc 2.95.3
  • make 3.79.1
  • patch 2.5.4
Page Top

前準備

以下の4個のファイルをダウンロードし、一つのディレクトリに置きます。
さらにlinux-patches0001.tar.gzを展開します。

[添付]

gcc-3.2-20020817-1.src.tar.gz

http://sourceforge.net/projects/mingw/
go_0011s.lzh

http://www.imasy.org/~kawai/osask/developers.html

  • もしcc1のソースが不要なら、go_0011p.lzhを使うほうがダウンロードが速く完了していいかもしれない。 -- K

obj2bi3a.lzh

http://www.afis.to/~mone/osask/osask_ml/200102/msg00006.html
から、ベータ版ページに行って、そこからDL

Page Top

いよいよコンパイル

linux-patches0001.tar.gz

このページの下の方の「添付」のところにあります。
introa11.lzhを例にとって説明します。

Page Top

cc1を作る

(introa11.lzh はhttp://www.imasy.org/~kawai/osask/developers.html にあります。)

最初から入っていたネイティブのcc1ではgas2naskと上手く連係が取れないようでした。
ですので、ソースから作ります。

$ tar xvzf gcc-3.2-20020817-1.src.tar.gz
$ cd gcc-3.2-20020817-1
$ patch -p1 < ../gcc.patch
$ touch gcc/config/i386/cygwin2.c
$ cd ..
$ mkdir gcc-build
$ cd gcc-build
$ ../gcc-3.2-20020817-1/configure --target=i386-pc-cygwin
$ patch gcc/auto-host.h < ../auto-host.patch
$ cd libiberty
$ make libiberty.a
$ cd ../gcc
$ make cc1

これでcc1が出来ました。cc1のみ ~/osask/binなどに
コピーすれば残りは消してしまってOKです。

Page Top

gas2naskを作る

$ lha -e go_0011s.lzh gas2nask/gas2nask.c
$ cd gas2nask
$ patch < ../gas2nask.patch
$ gcc -O2 -o gas2nask gas2nask.c

gas2naskのみ ~/osask/binなどにコピーすれば残りは消してしまってOKです。

Page Top

naskを作る

$ lha -e go_0011s.lzh nask/{nask.c,ll.c,ll_lib.c,drv_w32/boot.c}
$ cd nask
$ patch -p1 < ../nask.patch
$ gcc -O2 -o nask drv_w32/boot.c nask.c ll.c ll_lib.c

naskのみ ~/osask/binなどにコピーすれば残りは消してしまってOKです。
introa11.lzhを展開します。

Page Top

obj2bim3,bim2bin3 を作る

$ lha -e obj2bi3a.lzh callmain.c obj2bim3.c bim2bin3.c
$ gcc -O2 -o obj2bim3 callmain.c obj2bim3.c
$ gcc -O2 -o bim2bin3 callmain.c bim2bin3.c

少しwarningが出るのは気にしない。
obj2bim3, bim2bin3を ~/osask/binなどにコピーすれば残りは消してしまってOKです。
makefile 内の SJISCONVのところを

Page Top

最後に

/osask/binにPATHが通るようにして下さい。
以上でOSASKアプリの開発環境が整いました。
SJISCONV = ln
と置き換えます。(笑

makefile を Makefile にリネームします。
(何故その必要があるのかは、makefileの中を見れば分かります。)

$ make

でhelloc4.binが生成されます。

Page Top

VMWareでOSASKを動かす

Page Top

大まかな手順

小柳さんのページ(http://homepage1.nifty.com/dreaming/osask/)から
「OSASK/AT ver.3.6 簡単おすすめパックの VMware 用 イメージ(osvmw36.lzh)」
をとってきて展開すると osask36.flpが出来ます。
VMWareの設定のfloppy deviceの所で

Type: File

Path: <osask36.flpのパス>

Page Top

勝手にRPM!

注:ここはhideyosiが書き加えたものです。

上記のwqさんの功績をチョッパリ!!←差別表現 (^^;)
ここまでのセットアップを完了済みのRPMを公開します。動作はVineLinux2.6で確認しています。
とします。
完成品 1.3MB

ソース 28MB(GCC入りなので、これはデカイ。やむなし!

specファイル 2Kb

Page Top

VMWareで動かしているOSASKにLinuxからファイルを送る手順

バイナリは全て /usr/bin/ 以下に展開されます。さらに、introa11.lzh に含まれている helloc4.c を、/usr/share/osask-exapm に展開します。
導入した後は、例えば

~/$ cp -R /usr/share/osask-examp hello4
~/$ cd hello4
~/hello4/$ make

とかで、OSASKで稼動する hello4c.bin をコンパイルすることができます。
specファイルは物凄くテキトーです。「あらら?」と思った方は、私に断りなくガンガン編集してくださいませ。(もちろん間違いの指摘も大歓迎)
wqさんへ
こういったものを公開してみましたが、どうでしょう?。ライセンスや心情等々、問題や危惧がありましたら、是非、忌憚なきご意見をいただけましたら。
まずosask36.flpを適当なディレクトリにマウントしておきます。(スーパーユーザで)

# mkdir /mnt/osask
# mount -o loop -o uid=wq osask36.flp /mnt/osask
  • -o loop: ループバックデバイスをマウントする。
  • -o uid=wq: 中のファイルの所有者をwqにする。(wqの部分は自分のユーザ名に置き換えて下さい。)

マウントできたら次のようにします。
(helloc4.binを送りたいときの例)

$ cp helloc4.bin /mnt/osask
$ sync
OSASKのPOKONで[Shift]-[Insert]

syncはlinuxが遅延書き込みしていた分を実際に書き込ませます。
POKONで[Shift]-[Insert]とするとOSASKはフロッピィを再度読み直します。

Page Top

TIPS

OSASKを動かしている間 osask36.flpをマウントしっぱなしにするのは特に問題ないようです。
つまりMakefileの後ろに

cp $*.bin /mnt/osask
sync

等と書いておくととても便利です。

Page Top

うまくいかないときはこちらへどうぞ

  • 試してはいないけどコメント。すごーい!linksetはそのうち一般公開しますね。 -- K 2003-05-30 (金) 22:21:24
  • ここに感想を書いちゃまずいかもしれない気がしてきたので、続きはimpressionsで。 -- K 2003-05-30 (金) 22:24:55
  • あ、うまくいかないときに限らず感想とか提案なども書いて下さい。 -- wq編集 2003-05-30 (金) 23:00:11
  • やっぱりDL出来ないです、xreaとこのwikiの相性が良くないのか、何かですが。tok2で良かったらファイル代理upしますので、t_a_k_o@24i.netにでも添付でメールしてください… -- くーみん編集 2003-05-31 (土) 09:28:39
  • くーみんさんの発言は省略があってわかりにくそうなので、フォローです。くーみんさんは、wqさん作のlinux-patchesがダウンロードできないよー、と言っています。>wqさん -- K 2003-05-31 (土) 09:58:57
  • ダウンロードできるようにしました。こちらの設定不備によるものでした。すみません。 -- nisi 2003-05-31 (土) 17:51:32
  • すばらしい! (ASKAもあればOSASKが作れる^^;) コンパイルに使ったgccのバージョンはいくつですか? -- I.Tak. 2003-06-02 (月) 12:31:41
  • ダウンロードの件、ありがとうございました。>nisiさん -- wq編集 2003-06-02 (月) 21:27:43
  • バージョンは上の方に書いておきました。>I.Tak.さん -- wq編集 2003-06-02 (月) 21:28:39
  • 前準備の項目のところを勝手にいじりました。ごめんなさい。wqさん、時間があったら試してみてください。うまくいったら説明を書き換えてみてください。他の人がやってくれてもいいですが。 -- K 2003-07-04 (金) 02:14:25
  • askaのビルドできたひといますかね? -- 2003-07-24 (木) 18:23:20
  • 結論:LinuxでOSASK本体はビルドできないのでしょうか? -- 2003-07-24 (木) 19:43:23
  • ASKAをコンパイルしようとしたらio.hが無いと叱られました。ライブラリかなんか足りないのかな。naskもparse error before __builtin_va_list とか言われるし。 -- I.Tak. 2003-07-25 (金) 12:14:10
  • ASKAはよく分かりませんが、naskがコンパイルできないのはつらいなあ。wqさんはできたみたいですが・・・。 -- K 2003-07-25 (金) 12:32:43
  • あれ?こっちでは(Red Hat9)~/osask/bin/naskがありますけど。。。(つかってないので、実際に動くのか堂かは知りませんけど。) -- 2003-07-25 (金) 17:53:58
  • RPMの話ではなく, コンパイルするときの話なんです>parse error。諦めてRPMをインストールしようかなあ。 -- I.Tak. 2003-07-25 (金) 20:42:45
  • ん? ~/osask/bin/naskということはやっぱりコンパイルの話なのか……コンパイルさえできれば動くはずなのになあ。 -- I.Tak. 2003-07-25 (金) 21:15:10
  • え? nask コンパイル通りませんか? へんだなぁ。I.TakさんのLinuxって、デスビはなんですか? -- hideyosi 2003-07-25 (金) 21:27:05
  • Debian GNU/Linux 3.0r0 が入っております。カーネルがコンパイルできる程度の環境は入れたけど, C++関係はあんまり入れてないかも。 -- I.Tak. 2003-07-25 (金) 21:49:20
Page Top

I.Takさんへ

  • うちでデビを導入して実験してみました。うちでも parse error に悩まされましたが、ある条件でコンパイルが通りました。
  • wqさんのlinux-patches0001.tar.gzなんですが、こいつの中に、includeというファイルが入っています。どうも、こいつがnaskディレクトリの上にないと parse error が出ます。I.Takさんほどの人がこんなことでつまずいているとは思えないのですが、念のため。
  • wqさんの解説書(上のほうの)は、CC1・gas2nask・・・と順に行っていますね。naskだけを作りたい場合、linux-patches0001.tar.gzをすっ飛ばしてやっていたのですが、以下のような構成でないと、うちでもエラーになりました。
~/test── nask ─┬─ nask.c
             │   │
       │  ├─ ll.c
             │   │
        │   ├─ ll_lib.c
             │   │
        │   └─ drv_w32 ── boot.c
             │  
     include ─┬─ stdio.h   ←─┬─ linux-patches0001.tar.gz内のもの
                    └─ stdlib.h   ←─┘
  • linux-patches0001.tar.gz 内の include を配置して今一度試してみてください。
  • ついでです。うちのデビのパッケージリストです。ご参考までに。リスト
  • おお, 思い当たります。なるほど……成功しました。ありがとうございますv(^^ -- I.Tak. 2003-07-28 (月) 12:16:34

Last-modified: 2009-11-17 (火) 00:00:00 (JST) (319d) by lina