ページへ戻る

+ Links

− Comments

 印刷 

hideyosi​/linatol7計画 :: OSASK計画

osaskwiki:hideyosi/linatol7計画

なんすかこれ? anchor.png

hidetol7がほぼ固まってきたので、コイツを基点にしてLinuxやFreeBSDで動くtolsetを作ってみようかと。OSASK・はりぼて、末はhijkなんかも動かせたらいいなぁというわけ。

悪いけどこれより古いのはもう管轄外とさせていただきます

Page Top

Linuxのジレンマ anchor.png

hidetolはWin用でよくも悪くも固定されてるよね?

なので、基本、バイナリ配布。ソースはオマケみたいなもんって感じの場合が少なくないと思うけど、Linuxとかの場合はそうも行かない。逆で、基本はソース。それをコンパイルするというもの。

・・・さてそうなると。

いっちばん最初にtolsetをコンパイルするのは誰じゃ? と、こうなるわけ。

そこで、なんにもないLinuxでコンパイルする場合と、既に28GOとかを入手している場合との2パターンでいこうかと。

なんもないLinuxでのものをパターン青。既に28GOを入手している場合をパターン赤とします。

Page Top

パターン青! anchor.png

とにかく、いっちばん最初はLinuxのgccとかのお世話にならんといけん。でも、それはできるだけ絞る形で。

Page Top

28GO_G、28GO_Kをgccにて anchor.png

まずは、以下はどうしてもgccでコンパイルせんといかんもの。

  • 28GOcpp0 (cpp0.exe)
  • 28gocc1 (cc1.exe)
  • nask
  • sjisconv
  • gas2nask
  • naskconv0
  • golib00
  • Asuka
Page Top

obj2bin anchor.png

次に、上記できあがったコマンドを使ってobj2binをコンパイルする。

Page Top

またひっかかった・・・ anchor.png

まーいったなぁ・・・edimgがコンパイルできない。どうもsargow32.lib内の関数が認識できないみたいだ・・・これ、どういうもんだったっけ・・・

まちがってました・・・orz

Page Top

ベータリリースにこぎつけたぞよw(1/25) anchor.png

そんなわけで。

使い方は、以下のスクリプトをダウンロードして実行するだけです~

(なに怖いって? じゃ、自分で中見てみてくだされ。しょぼいバッチファイルだよ。そんくらいはLinux使いなら・・・ねぇ?)

ご自分が書き込める権限の場所にスクリプトをダウンロードして実行すると、

  1. 「linatol_7」という名前のディレクトリを作成する。
  2. ソースコードをヒト揃えダウンロードする
  3. おのおのを解凍
  4. 解凍したファイルを「linatol_7/src」内にコピー&移動し、配置。
  5. コンパイルできるようにパッチを当てる

これらを行ってくれますので。問題なく実行が終了したら、あとは「linatol_7/src」に降りて make で全ての実行ファイルを生成してくれます。

さらに、 make install で、「linatol_7/src/z_tools」以下にうまくコピーして配置してくれるはずです。

あとはこの z_tools ディレクトリを丸ごと移動orコピーすればOSASKやはりぼてがコンパイルできると。こういうわけ!!!

なお、OSASKやはりぼてはそのままではコンパイルできない。これは元のソースがWindows上でのコンパイルを前提としてMakefileなんかが書かれているから。すこしだけ修正しないといけない。これらのパッチも今準備してるからもすこしお待ちを~

この版の問題点。bim2binを使ってのTek5圧縮がうまく動作しないんですよ・・・orz・・・。なんとかなればいいんだけど、なかなかどうして・・・

Page Top

OSASKのパッチ完成~♪ anchor.png

でけたー。

Page Top

使い方 anchor.png

  • まずはlinatol7.shを使ってlinatol7をダウンロード&展開します。
  • srcディレクトリに降りてmake、make installを行ってください。(これでz_toolsが出来上がります。
  • ここのページの下のほう。Download GNU tarballをクリックしてください。これで4.7.tar.gzがダウンロードできます。(これがOSASK 4.7の生粋のソースコードです)
  • osasklinatol.patchをダウンロードします。
  • 各々を以下のように配置しておきます。
お好きなディレクトリ
    │
    ├─ osasklinatol.patch
    │
    ├─ 4.7.tar.gz
    │
    └─ z_tools/
  • 後は以下でメイクできます。
$ tar xzvf 4.7.tar.gz                <--ソースの解凍
$ patch -p0 < osasklinatol.patch     <--パッチ当て
$ cd 4.7                             <--ディレクトリに下りて・・・
$ make                               <--メイク
Page Top

はりぼて苦戦中・・・ anchor.png

  • linatolのobj2bimに問題があるらしい。bootpac.bimを正しく生成してくれない。(その手前の.obj群は大丈夫)
  • obj2bimはルールファイルってのがあるんだがこれを弄るのかなぁ。スタックとか??
  • 出来上がってきたbootpac.bimはよく似てはいるのでまったくおかしいわけじゃないんだろうが・・・困ったな・・・
  • 違うかもしれんが・・・
  • obj2ibimはharilibc.libとgolibc.libを使う。linatolのgolibc.libはまったく別のものになっている。
  • これは理由があってbim2binで無指定時に使われるTek5が動作できないから。(とりあえずTek0を指定している)
  • まいったなぁ。ここでもTek5が障害になっている。これなんとかならんもんかな・・・

一般用コメント一覧

  • ubuntu9.10ですが、./linatol7.sh としたら、mv コマンドが一部失敗したので、mv -f と書き換えて強制上書きで動作させました。 あと、ubuntu9.10だとデフォルトで patch コマンドが入ってないのであらかじめ sudo apt-get install patch として patch コマンドをインストールしとく必要があるみたいです。 あと、コンパイルできませんでした。 28GOcpp0 のコンパイル中にリンクエラーで失敗しました。(可変長引数を受け取る関数のリンクで失敗してるみたいです。ubuntu系固有の問題かもしれませんが…) 使ってみたいので、コンパイルできなかった人用にバイナリ版も公開してくれるとありがたいです。  --  kemeppo   2010/5/15 23:03
  • レポートに感謝いたします。むむ〜・・・。他のディストリだと問題が出てますかぁ。ちなみにオイラ側の作成はVineLinux4.0で行っておりました。FreeBSDも含め、情報を集めようと思います。  --  hideyosi   2010/5/16 10:09
  • 28GOcpp0 のコンパイルでのリンクエラーは __builtin_stdarg_start がリンクできないのが原因だったので、 linatolのソースのどこで __builtin_stdarg_start 使われてるかを調べたところ、printfなどで使う va_start へdefineされてました。 コンパイルに使用してる gcc4.4.1のstdarg.h を見たら、va_start は __builtin_va_start という名前へとdefineされてるので、linatol7のソース中の __builtin_stdarg_start を すべて __builtin_va_start に書き換えたところ 一応リンクはできて、実行形式28GOcpp0ができました。 具体的に書き換えたソースは gcc/builtins.def haribote/stdarg.h golibc/stdarg.h guigui00/stdarg.h include/stdarg.h z_tools/haribote/stdarg.h z_tools/guigui00/stdarg.h です。 28GOcc1も一応バイナリができたのですが、どうも壊れてるみたいです。やっぱり __builtin_va_start にしたのがまずかったのか、それとも他の原因なのか、不明なのであきらめました。 ../toolstdc/sjisconv -s abs.c abs.ca (改行) ../gcc/28GOcc1 -I. -Os -quiet -W -Wall -Werror -o abs.gas abs.ca (改行) make[2]: *** [abs.gas] Segmentation fault (改行)  --  kemeppo   2010/5/17 23:32
  • kubuntu9.10の64bit版のgccを使ってるのが原因かもしれないと思って、ubuntu9.04の32bit版のgccで試したところ、28GOcc1 も動作する状態でコンパイルできました。 その後、bim2binでコンパイルエラーがありました。具体的には変数 tek1_s7ptr が 4744行で static 変数として内部参照として実体が宣言されてるのに、38行でexternとして外部参照とされてるので、ここにエラーがでたので 38行をstaticにしたらコンパイルが通りました。が、そもそもどうして38行でわざわざexternにしてたのか?を考えたら、bim2binのソースは元々複数のソースファイルで構成されてたものを、あとから1つにまとめたもので、そのときの残骸かな?とも思ったのですが、そうじゃなくてあえて static 変数を38行で extern として矛盾して宣言することに、なにかしらのプログラムテクニック的な意味があるのかもしれないとも考えられるので、むやみに38行をstaticとした結果、なにか不具合が起きてるのかもしれなくて不安です。あと、-osacompオプションで圧縮をしようとしたら tek5が無いとかエラーがでました。これもしかして外部プログラムを呼び出してて、そのプログラムもコンパイルして置いとかないと動作しないものなのかも?と思いました。で、38行のexternは、もしかしたらこの外部tek5モジュール内の変数を指してるのかも??とも思いました。でも、そうだとしたら4744行のstaticの実体の意味がわからない(4744行以降では使われてないし、それこそ意味不明の宣言になってしまう)謎です。同様の変数宣言のエラーがもう一ヶ所と、あとCHAR*ポインタを非ポインタintに型キャストして、そこにint型の数値を代入する記述がエラーになってる所あって直したのですが、ちょっと詳しい詳細は忘れました。とりあえずmakeは最後まで通りました。  --  kemeppo   2010/5/19 22:06
一般用コメント欄は使用できません

Last-modified: 2010-05-09 (日) 00:00:00 (JST) (319d) by lina