*このページの内容は整理前の「Linux上でOSASK用バイナリを生成しよう」のものです。 -すべてはこのページでのwqさんのがんばりから始まったのです。ということであっけなく消されてしまうには忍びないので、ここで復活。 *概要 ここでは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 *前準備 以下の4個のファイルをダウンロードし、一つのディレクトリに置きます。 さらにlinux-patches0001.tar.gzを展開します。 #ref(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 -この代わりに http://www.imasy.org/~kawai/osask/developers.html からsrcset05を使ってちょ。tolset05と同じ場所にあるよん。 -- [[K]] *いよいよコンパイル linux-patches0001.tar.gz~ このページの下の方の「添付」のところにあります。 introa11.lzhを例にとって説明します。 *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です。 *gas2naskを作る $ lha -e go_0011s.lzh gas2nask/gas2nask.c $ cd gas2nask $ patch < ../gas2nask.patch $ gcc -O2 -o gas2nask gas2nask.c gas2naskのみ ~/osask/binなどにコピーすれば残りは消してしまってOKです。 *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を展開します。 *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のところを *最後に ~/osask/binにPATHが通るようにして下さい。 以上でOSASKアプリの開発環境が整いました。 SJISCONV = ln と置き換えます。(笑~ makefile を Makefile にリネームします。 (何故その必要があるのかは、makefileの中を見れば分かります。) $ make でhelloc4.binが生成されます。 *VMWareでOSASKを動かす **大まかな手順 小柳さんのページ(http://homepage1.nifty.com/dreaming/osask/)から 「OSASK/AT ver.3.6 簡単おすすめパックの VMware 用 イメージ(osvmw36.lzh)」 をとってきて展開すると osask36.flpが出来ます。 VMWareの設定のfloppy deviceの所で~ Type: File~ Path: <osask36.flpのパス>~ *勝手にRPM! COLOR(#ff0000){''注:''ここはhideyosiが書き加えたものです。}~ 上記のwqさんの功績をチョッパリ!!COLOR(GRAY){←差別表現} (^^;) ここまでのセットアップを完了済みのRPMを公開します。動作はVineLinux2.6で確認しています。 とします。 [[完成品:http://hideyosi.zive.net/age/goset/goset-0.0.1-0hd1.i386.rpm]] 1.3MB~ [[ソース:http://hideyosi.zive.net/age/goset/goset-0.0.1-0hd1.src.rpm]] 28MB(GCC入りなので、これはデカイ。やむなし!~ [[specファイル:http://hideyosi.zive.net/age/goset/goset.spec]] 2Kb~ **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はフロッピィを再度読み直します。 **TIPS OSASKを動かしている間 osask36.flpをマウントしっぱなしにするのは特に問題ないようです。 つまりMakefileの後ろに cp $*.bin /mnt/osask sync 等と書いておくととても便利です。 *うまくいかないときはこちらへどうぞ -試してはいないけどコメント。すごーい!linksetはそのうち一般公開しますね。 -- [[K]] SIZE(10):2003-05-30 (金) 22:21:24 -ここに感想を書いちゃまずいかもしれない気がしてきたので、続きは[[impressions]]で。 -- [[K]] SIZE(10):2003-05-30 (金) 22:24:55 -あ、うまくいかないときに限らず感想とか提案なども書いて下さい。 -- [[wq]] SIZE(10):2003-05-30 (金) 23:00:11 -やっぱりDL出来ないです、xreaとこのwikiの相性が良くないのか、何かですが。tok2で良かったらファイル代理upしますので、t_a_k_o@24i.netにでも添付でメールしてください… -- [[くーみん]] SIZE(10):2003-05-31 (土) 09:28:39 -くーみんさんの発言は省略があってわかりにくそうなので、フォローです。くーみんさんは、wqさん作のlinux-patchesがダウンロードできないよー、と言っています。>wqさん -- [[K]] SIZE(10):2003-05-31 (土) 09:58:57 -ダウンロードできるようにしました。こちらの設定不備によるものでした。すみません。 -- [[nisi]] SIZE(10){2003-05-31 (土) 17:51:32} -すばらしい! (ASKAもあればOSASKが作れる^^;) コンパイルに使ったgccのバージョンはいくつですか? -- [[I.Tak.]] SIZE(10){2003-06-02 (月) 12:31:41} -ダウンロードの件、ありがとうございました。>nisiさん -- [[wq]] SIZE(10){2003-06-02 (月) 21:27:43} -バージョンは上の方に書いておきました。>I.Tak.さん -- [[wq]] SIZE(10){2003-06-02 (月) 21:28:39} -前準備の項目のところを勝手にいじりました。ごめんなさい。wqさん、時間があったら試してみてください。うまくいったら説明を書き換えてみてください。他の人がやってくれてもいいですが。 -- [[K]] SIZE(10){2003-07-04 (金) 02:14:25} -askaのビルドできたひといますかね? -- SIZE(10){2003-07-24 (木) 18:23:20} -結論:LinuxでOSASK本体はビルドできないのでしょうか? -- SIZE(10){2003-07-24 (木) 19:43:23} -ASKAをコンパイルしようとしたらio.hが無いと叱られました。ライブラリかなんか足りないのかな。naskもparse error before __builtin_va_list とか言われるし。 -- [[I.Tak.]] SIZE(10){2003-07-25 (金) 12:14:10} -ASKAはよく分かりませんが、naskがコンパイルできないのはつらいなあ。wqさんはできたみたいですが・・・。 -- [[K]] SIZE(10){2003-07-25 (金) 12:32:43} -あれ?こっちでは(Red Hat9)~/osask/bin/naskがありますけど。。。(つかってないので、実際に動くのか堂かは知りませんけど。) -- SIZE(10){2003-07-25 (金) 17:53:58} -RPMの話ではなく, コンパイルするときの話なんです>parse error。諦めてRPMをインストールしようかなあ。 -- [[I.Tak.]] SIZE(10){2003-07-25 (金) 20:42:45} -ん? ~/osask/bin/naskということはやっぱりコンパイルの話なのか……コンパイルさえできれば動くはずなのになあ。 -- [[I.Tak.]] SIZE(10){2003-07-25 (金) 21:15:10} -え? nask コンパイル通りませんか? へんだなぁ。I.TakさんのLinuxって、デスビはなんですか? -- [[hideyosi]] SIZE(10){2003-07-25 (金) 21:27:05} -Debian GNU/Linux 3.0r0 が入っております。カーネルがコンパイルできる程度の環境は入れたけど, C++関係はあんまり入れてないかも。 -- [[I.Tak.]] SIZE(10){2003-07-25 (金) 21:49:20} ***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 を配置して今一度試してみてください。 -ついでです。うちのデビのパッケージリストです。ご参考までに。[[リスト:http://hideyosi.zive.net/~hideyosi/age/pkglist.txt]] -おお, 思い当たります。なるほど……成功しました。ありがとうございますv(^^ -- [[I.Tak.]] SIZE(10){2003-07-28 (月) 12:16:34}
(This host) = http://osask.net