15: 2007-02-12 (月) 22:54:25 |
現: 2024-01-06 (土) 22:39:09 |
- | ちょっと脱線の企画・・・(^^; | + | COLOR(red){''※'' ここは移植の検証やレポートを書いている場所です。LinuxやFreeBSD上ではりぼてOSのコンパイルを行いたい方は、[[こちらのページ:http://thebbl.hideyosi.com/modules/bwiki/index.php?ltmake]]に移動してください。現時点で行える手順やパッチをまとめてあります。} |
| + | ~ |
| + | ~ |
| + | ~ |
| + | ~ |
| + | ---- |
| | | |
| + | |
| + | |
| + | ちょっと脱線の企画・・・(^^; |
| + | ---- |
| *バージョン [#n4af26bb] | | *バージョン [#n4af26bb] |
| -せっかくなので、安定版の最新版5.5をまっさらにで導入してみよー! | | -せっかくなので、安定版の最新版5.5をまっさらにで導入してみよー! |
| ちょっと思ったこと。FreeBSDはかつて、Linuxに比べてドキュメントが豊富でまとまっているというのがウリだったと思う。しかし、ひさしぶりにインストールした5.5にはそれはもはや当てはまらないと思う。ports等の使い方や規格が沢山あり、かつ、それらがまったく順を追っていないのだ。つまりシロウトが検索を頼りに文章を読んでいくと、余計な混乱や致命的な失敗を犯すおそれがあると感じた。(もちろん、たまたまここ一年くらいが過渡期なのかもしれないが) | | ちょっと思ったこと。FreeBSDはかつて、Linuxに比べてドキュメントが豊富でまとまっているというのがウリだったと思う。しかし、ひさしぶりにインストールした5.5にはそれはもはや当てはまらないと思う。ports等の使い方や規格が沢山あり、かつ、それらがまったく順を追っていないのだ。つまりシロウトが検索を頼りに文章を読んでいくと、余計な混乱や致命的な失敗を犯すおそれがあると感じた。(もちろん、たまたまここ一年くらいが過渡期なのかもしれないが) |
| | | |
- | -さて、qemuを導入できた。ちゃんと動くかどうか、とにもかくにもはりぼての最終版を当てて起動してみよう! | + | -さて、qemuを導入できた。ちゃんと動くかどうか、とにもかくにもはりぼての最終版を当$てて起動してみよう! |
| | | |
| -あっさりOK。つまり、qemuはOKというわけだ! | | -あっさりOK。つまり、qemuはOKというわけだ! |
| COLOR(red){ちと仕切りなおし!古いのは[[FreeBSDではりぼて!/OLD]]に移動〜} | | COLOR(red){ちと仕切りなおし!古いのは[[FreeBSDではりぼて!/OLD]]に移動〜} |
| | | |
| + | ---- |
| + | *tolset移植 [#f7945ca6] |
| + | -まずははりぼてCDに入っているtolset(Win版)をBSDに移植。 |
| + | -[[FreeBSDではりぼて!/tolset移植]] |
| + | -移植状況 |
| + | |Winコマンド|状況|備考|実行実績|h |
| + | |aksa.exe|たぶんOK||| |
| + | |aska.exe|たぶんOK||| |
| + | |bim2bin.exe|たぶんOK||| |
| + | |bim2hrb.exe|たぶんOK||OK| |
| + | |bin2obj.exe|たぶんOK||OK| |
| + | |cc1.exe|たぶんOK||OK| |
| + | |cpp0.exe|たぶんOK||| |
| + | |edimg.exe|たぶんOK||OK| |
| + | |gas2nask.exe|たぶんOK||OK| |
| + | |golib00.exe|たぶんOK||| |
| + | |makefont.exe|たぶんOK||OK| |
| + | |nask.exe|たぶんOK||OK| |
| + | |naskcnv0.exe|たぶんOK||| |
| + | |nothing.com|OK|つか、作った|| |
| + | |obj2bim.exe|たぶんOK||OK| |
| + | |osalink1.exe|たぶんOK||| |
| + | |sjisconv.exe|たぶんOK||| |
| + | |make.exe|×|純正がある|| |
| + | |ld.exe|×|gccで代用|| |
| + | |imgtol.com|×|ddで代用可能らしい|OK(ddで)| |
| + | |comcom.exe|×|ソース失念?|| |
| + | |doscmd.exe|×|つか、いらないようだ|| |
| + | |sartol.exe|×||| |
| + | |t5lzma.exe|×||| |
| + | |upx.exe|×||| |
| + | |wce.exe|×||| |
| | | |
- | *tolset [#e42b75db] | |
- | -さてtolsetである。「30日でできる!OS自作入門」(ウチのは第7刷)のCD内にあるtolsetのソールをFreeBSD上でコンパイルし、使えるようにできないものだろうか? | |
| | | |
- | -さっそくCD内からソースを持ってきた。コンパイルの実験である。 | + | *1日目 [#gdbea45f] |
- | -ディレクトリはこんな感じ。 | + | -これだけコマンドが揃ったし、そろそろ実際に実験してみようかな・・・ |
| + | -まずは1日目。P18の作業だね。01_day/helloos0 実際にできるかな。 |
| + | --たはは・・・あっさりうまくいってしまった。(まあこれは当然かな??) |
| | | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 aksa1a | + | -ほい次。P24。01_day/helloos1 。いよいよnaskの登場だ・・・ |
- | drwxr-xr-x 3 lina lina 512 Nov 21 16:15 aska | + | --うほぉ! なんかうまく起動したみたいだぞ! |
- | drwxr-xr-x 10 lina lina 512 Nov 21 16:15 bim2bi4w | + | --つーことはさ。まだ「たぶん」だけどさ。nask、OKっぽいよね??(^^ |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 bim2hrb | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 bin2obj0 | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 doscmd0a | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 edimg0i | + | |
- | drwxr-xr-x 20 lina lina 512 Nov 21 16:15 go_0023s | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 hrblib0a | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 imgtol0d | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 makefont | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 obj2bi4c | + | |
- | drwxr-xr-x 2 lina lina 512 Nov 21 16:15 osalink1 | + | |
- | drwxr-xr-x 4 lina lina 512 Nov 21 16:15 sartol0j | + | |
- | drwxr-xr-x 3 lina lina 512 Nov 21 16:15 tk5lgpl1 | + | |
| | | |
- | **go_0023s [#va05edbb] | + | -気をよくしてP26。01_day/helloos2 もやっちゃえ!。さて・・・ |
- | -さて、tolsetのコンパイルはまず、go_0023s/gcc に降りて、そこでgmakeをかます。かつ、おのおのの環境に合わせるため、そこで ../include/rules.mak を変更するという感じになる。ではさっそく・・・ | + | --わーっはっは!いけたいけた! |
| + | --nask、だいじょうぶみたいじゃん!! |
| | | |
- | $ cd go_0023s/gcc | + | -・・・そうなると課題は、バッチファイルだよね。あと、今回はnaskのパスを作業場所から直接もってきたけど、どっかにまとめておいたほうがいいよなぁ。 |
- | $ gmake <- makeではないので注意 | + | |
- | -・・・書かないけど、ちょこっとだけのエラーが出てまったくできーん。そんなわけでさっそく ../include/rules.mak を修正しよ〜。rules.makはMinGWでのコンパイル用に調整されたものがあるので、コイツを雛形にして進めよう。 | + | |
| | | |
- | $ cp ../include/rules.mak ../include/rules.mak.org <-念のためとっておく | + | -おっと!いけない!うっかりしてた。 |
- | $ cp ../include/rules.gcc ../include/rules.mak | + | -シバシバっと実験してたので、今回はFDにインスコしてないんだよなぁ。これじゃimgtolの実験ができない。(まあ実際はimgtolは移植不可なんだけどね) |
- | $ emacs ../include/rules.mak <- お好きなエディタで | + | -ええと、imgtolの代用品は・・・[[わこうさんの、わこうメモ:http://hrb.osask.jp/wiki/index.php?Linux%2Fwako_memo]]によると、ddが使えるらしい。 |
| + | -どれどれっと・・・ |
| + | --うほ〜!いけた! やった!! OK! |
| | | |
- | -まずはこれを修正。 | + | *2日目 [#o23ed8f8] |
| + | -さて2日目。P30の 02_day/hallool3 。 |
| + | --とんとーんとOK。 |
| | | |
- | GCC = e:\mingw\bin\gcc.exe -> GCC = gcc | + | -P43。 02_day/hallool4。 お? edimg か。さてさて・・・ |
- | MAKE = make.exe -> MAKE = gmake | + | --あー。fdimg-at.tekがいるのか!もってこないと・・・ |
- | LIBRARIAN = golib00.exe -> LIBRARIAN = ar rcs | + | --おぉ!これもいけた! えっと。つーことは、edimg も「たぶんOK」でいいのかな?? |
- | DEL = del -> DEL = rm -f | + | |
| | | |
- | - | + | -P45。 02_day/hallool5。 こらもう、言わんでも解るやろ! |
- | -さてこれでgmake! そこそこ進んで行くけど・・・こんなエラーが出て停止。 | + | |
| | | |
- | gcc -c -Os -DIN_GCC -DHAVE_CONFIG_H -I../include -o floatformat.o floatformat.c | + | -そんなわけで2日目完了〜。 |
- | In file included from floatformat.c:24: | + | |
- | ../include/math.h:11:20: GO_lib.h: No such file or directory | + | |
- | gmake[3]: *** [floatformat.o] Error 1 | + | |
| | | |
- | -これは、math.h内でインクルード指定しているファイル名がGO_lib.hになってるのが原因。(Win32では問題ないけど、UNIX系では大文字小文字が区別されるので) | |
- | -さてこれを修正するんだけど、こういう大文字になっちゃってるのって他にもあるんだよね。なので以下、一覧。すべて go_lib.h に書き換える。 | |
- | --../include/math.h の11行目 | |
- | --../go_lib/malloc.c の3行目 | |
- | --../go_lib/realloc.c の3行目 | |
- | --../go_lib/symalloc.c の3行目 | |
- | -さて、再びgmake。すると今度はこんなエラーが! | |
| | | |
- | gcc -Wl,-s -o cpp0.exe ../drv_stdc/cpp0main.obj cppmain.o intl.o \ | + | *3日目 [#aed96907] |
- | libcpp.lib hashtable.o version.o ../intl/libintl.lib \ | + | -・・・悪いけど、ここはFreeBSD版tolsetの実験場所なので、harib00a〜harib00d までは飛ばすよ〜ん。(やってること同じだもんね) |
- | ../libiberty/libiberty.lib ../go_lib/go_lib.lib ../go_lib/stdin.o \ | + | |
- | ../drv_stdc/drv_stdc.obj | + | |
- | gcc: libcpp.lib: No such file or directory | + | |
- | gcc: ../intl/libintl.lib: No such file or directory | + | |
- | gcc: ../libiberty/libiberty.lib: No such file or directory | + | |
- | gcc: ../go_lib/go_lib.lib: No such file or directory | + | |
- | gmake[1]: *** [cpp0.exe] Error 1 | + | |
| | | |
- | -これはどういうことかって言うと、ほぼ最期までコンパイルできて、cpp0.exe を作る段階。いくつかの.objファイルと.libファイルをリンクしようとしているんだけど、その再に | + | -P58。03_day/harib00e。いよいよ複数ソースのリンクだね。 |
- | --libcpp.lib | + | --ふむ・・・。ipl.binとharibote.sysをDOSのコピーコマンドで連結?してるのか。同じことをするには・・・・ |
- | --../intl/libintl.lib | + | --おぉ!またしても[[わこうメモ:http://hrb.osask.jp/wiki/index.php?Linux%2Fwako_memo]]にヒントが! なになに? catと使うって??? |
- | --../libiberty/libiberty.lib | + | --んんん?ちょっとちがうぞ? イメージ内にコピーするのか!? |
- | --../go_lib/go_lib.lib | + | --あー。完全に勘違いしてた。この場合のcopyはあくまでもedimg内の命令なのか!なので、Makefileそのままの命令で出来上がった!(ちゃんとバイナリエディタで確認したよ。(^^ |
- | -というファイル達がないと言っているわけ。・・・で、なんでないかといえば、よーするにコンパイルを失敗しているんだよね。(^^; | + | --まあ一応、qemuでも実験・・・(なんも変化がないのでちょっとさみしいね。) |
- | -なんでこれら.libが失敗しているかっていうと、.libを作るためのライブラリアンと言うソフト。これがWin32だとKタンオリジナルの golib00.exe というものを使っているから。 | + | |
- | -gccだと、ライブラリアンは ar というコマンド。でもそれだけじゃなくて、構文も違うんだよね。 | + | |
- | -なので、おのおのの.libを作成している部分の構文を書き換えよう。 | + | |
- | -まず、今いる場所のMakefile。(libcpp.libを作るところ) | + | |
- | $ emacs ./Makefile | + | |
- | --58行目かな? | + | |
- | : | + | |
- | libcpp.lib : $(LIBCPP_OBJS) Makefile ../include/rules.mak | + | |
- | $(LIBRARIAN) out:$@ $(LIBCPP_OBJS) | + | |
| | | |
- | libbackend.lib : $(OBJS) | + | -harib00f〜harib00h は飛ばして・・・ |
- | $(LIBRARIAN) out:$@ $(OBJS) | + | |
- | : | + | |
- | --これを、こう書き換える。 | + | |
- | : | + | |
- | libcpp.lib : $(LIBCPP_OBJS) Makefile ../include/rules.mak | + | |
- | $(LIBRARIAN) $@ $(LIBCPP_OBJS) | + | |
| | | |
- | libbackend.lib : $(OBJS) | + | -P66。03_day/harib00j。さーて。いよいよ他のツールが必要になってきた。いけるかな?? |
- | $(LIBRARIAN) $@ $(OBJS) | + | --さてMakefileを追いかけてみる。 |
- | : | + | ---ipl.nasはnaskで.binに。 |
- | --さてー!これでOK!! | + | ---asmhead.nasもnaskで.binに。 |
- | --・・・なんだけど、ちょっと。 | + | ---naskfunc.nasのnaskで.binに。 |
- | --これ、元々はWin32環境用のMakefileだよね?。なので、出来上がる実行ファイルはみんな.exeってことにしてある。でも、FreeBSDとかLinux上だとちょっとイヤ〜ンだよね? | + | ---bootpack.cは cc1 -I../haribote/ -Os -Wall -quiet -o bootpack.gas で.gasに。 |
- | --なので、他の部分もついでに書き換え。 | + | ---bootpack.gasはgas2nask -aで.nasに。 |
- | : | + | ---bootpack.nasはnaskで.objに。 |
- | /*46行目*/ | + | ---bootpack.objはobj2bim @Rulefile out:bootpack.bimなんちゃらで、.bimに。 |
- | all : | + | ---bootpack.bimは、bim2hrbで.hrbに |
- | $(MAKER) cpp0 cc1 cc1plus | + | ---asmhead.binとbootpack.hrbをcopyコマンドで連結してharibote.sysに。 |
| + | ---ipl.binとharibote.sysをedimgで書き込み、haribote.imgに |
| + | --うひゃ〜。こりゃ大変だ。(^^; |
| + | --そろそろ手動でやるのもつらくなってきたので環境を少し整理。 |
| + | --まず、現時点で出来上がっている各コマンドを、~/z_toolsにコピー。 |
| + | --z_toolsにはhariboteディレクトリとその内容物が必要らしいので、CDから持ってくる。 |
| + | --で、Makefileを書き直してと。よーし! gmake! |
| + | --何点か問題が出たけど、とりあえず本の通り、「真っ黒クロスケ」の画面になった!成功くさい!(一瞬だけ、boot from・・なんて文字が出たあと、パっと真っ黒になったのだ) |
| | | |
| + | --さてとりあえずは成功。でもけっこうハマッたんだよね。つまらないことだけど。 |
| + | ---まず、Makefile内のディレクトリの指定。オイラは最初、自分のホームをあらわす~を使っていた。(~/z_tools とか)これがどうも全滅なんだよね。なので、元のように../でOKになるようにz_toolsの位置を配置しないといけない。もしくは絶対パス。いろいろ実験したけど、とにかく~だけはダメってことみたい。 |
| + | ---同じ原因で、haribote.rul内のディレクトリ指定も、../とか絶対パスじゃないといけないみたい。(おのおの調整してチョンマゲ) |
| + | ---そんなわけで、この「とりあえずのMakefile」の内容を公開。(qemuのrunとか弄ってないので。あくまでもmakeでharibote.imgを作るとこまで。) |
| + | TOOLPATH = ../z_tools/ |
| + | INCPATH = ../z_tools/haribote/ |
| + | |
| + | MAKE = gmake |
| + | NASK = $(TOOLPATH)nask |
| + | CC1 = $(TOOLPATH)cc1 -I$(INCPATH) -Os -Wall -quiet |
| + | GAS2NASK = $(TOOLPATH)gas2nask -a |
| + | OBJ2BIM = $(TOOLPATH)obj2bim |
| + | BIM2HRB = $(TOOLPATH)bim2hrb |
| + | RULEFILE = $(TOOLPATH)haribote/haribote.rul |
| + | EDIMG = $(TOOLPATH)edimg |
| + | IMGTOL = dd |
| + | COPY = cp |
| + | DEL = rm -f |
| + | |
| + | # デフォルト動作 |
| + | |
| + | default : |
| + | $(MAKE) img |
| + | |
| + | # ファイル生成規則 |
| + | |
| + | ipl10.bin : ipl10.nas Makefile |
| + | $(NASK) ipl10.nas ipl10.bin ipl10.lst |
| + | |
| + | asmhead.bin : asmhead.nas Makefile |
| + | $(NASK) asmhead.nas asmhead.bin asmhead.lst |
| + | |
| + | bootpack.gas : bootpack.c Makefile |
| + | $(CC1) -o bootpack.gas bootpack.c |
| + | |
| + | bootpack.nas : bootpack.gas Makefile |
| + | $(GAS2NASK) bootpack.gas bootpack.nas |
| + | |
| + | bootpack.obj : bootpack.nas Makefile |
| + | $(NASK) bootpack.nas bootpack.obj bootpack.lst |
| + | |
| + | naskfunc.obj : naskfunc.nas Makefile |
| + | $(NASK) naskfunc.nas naskfunc.obj naskfunc.lst |
| + | |
| + | bootpack.bim : bootpack.obj naskfunc.obj Makefile |
| + | $(OBJ2BIM) @$(RULEFILE) out:bootpack.bim stack:3136k map:bootpack.map \ |
| + | bootpack.obj naskfunc.obj |
| + | # 3MB+64KB=3136KB |
| + | |
| + | bootpack.hrb : bootpack.bim Makefile |
| + | $(BIM2HRB) bootpack.bim bootpack.hrb 0 |
| + | |
| + | haribote.sys : asmhead.bin bootpack.hrb Makefile |
| + | cat asmhead.bin bootpack.hrb >haribote.sys |
| + | |
| + | haribote.img : ipl10.bin haribote.sys Makefile |
| + | $(EDIMG) imgin:$(TOOLPATH)fdimg0at.tek \ |
| + | wbinimg src:ipl10.bin len:512 from:0 to:0 \ |
| + | copy from:haribote.sys to:@: \ |
| + | imgout:haribote.img |
| + | |
| + | # コマンド |
| + | |
| + | img : |
| + | $(MAKE) haribote.img |
| + | |
| + | run : |
| + | $(MAKE) img |
| + | $(COPY) haribote.img ..\z_tools\qemu\fdimage0.bin |
| + | $(MAKE) -C ../z_tools/qemu |
| + | |
| + | install : |
| + | $(MAKE) img |
| + | $(IMGTOL) if=/dev/fd0 of=haribote.img bs=512 count=2880 |
| + | |
| clean : | | clean : |
- | -$(DEL) cpp0 cc1 cc1plus | + | -$(DEL) *.bin |
- | -$(DEL) *.lib | + | -$(DEL) *.lst |
- | -$(DEL) *.o | + | -$(DEL) *.gas |
- | : | + | -$(DEL) *.obj |
- | : | + | -$(DEL) bootpack.nas |
- | /*64行目*/ | + | -$(DEL) bootpack.map |
- | cpp0 : cppmain.o intl.o libcpp.lib hashtable.o version.o \ | + | -$(DEL) bootpack.bim |
- | Makefile ../include/rules.mak | + | -$(DEL) bootpack.hrb |
- | : | + | -$(DEL) haribote.sys |
- | : | + | |
- | /*73行目*/ | + | src_only : |
- | cc1 : $(C_OBJS) $(BACKEND) Makefile ../include/rules.mak | + | $(MAKE) clean |
- | : | + | -$(DEL) haribote.img |
- | : | + | |
- | /*81行目*/ | + | |
- | cc1plus : $(CXX_OBJS) $(CXX_C_OBJS) $(BACKEND) libcpp.lib \ | + | |
- | Makefile ../include/rules.mak | + | |
| | | |
| + | -さーて。これがうまくいっているってことは以下のコマンド郡は「たぶんOK」に昇格だぜ! |
| + | --cc1 |
| + | --gas2nask |
| + | --obj2bim |
| + | --bim2hrb |
| | | |
- | -さて次。../libiberty/libiberty.lib のMakefile。 | + | *ちょっと一息・・・ [#ec5030c4] |
- | $ emacs ../libiberty/Makefile | + | -さて、この一連の作業はなにをしているかっていうと、tolsetがFreeBSDで使えるか。FreeBSDで「30日で出来る!OS自作入門」を進めていけるか。ということの検証。 |
- | --これは一箇所。一番最後の部分を書き換える。 | + | -そう考えると、現時点ではまだいくつかのtolsetのコマンドの移植が未完だけど、実はhariboteでは使われていないものも結構あるよね。 |
- | $(TARGETLIB) : $(OBJS) Makefile ../include/rules.mak | + | -なので、そいつらをちょっと洗い直し。(初出順に並べ替え) |
- | $(LIBRARIAN) out:$@ $(OBJS) | + | |
- | ↓ | + | |
- | $(TARGETLIB) : $(OBJS) Makefile ../include/rules.mak | + | |
- | $(LIBRARIAN) $@ $(OBJS) | + | |
| | | |
| + | |Winコマンド|移植状況|Makefile内初出|実行実績|h |
| + | |imgtol.com|×|1日目|OK(ddで)| |
| + | |nask.exe|ほぼOK|1日目|OK| |
| + | |bim2hrb.exe|ほぼOK|3日目|OK| |
| + | |edimg.exe|ほぼOK|3日目|OK| |
| + | |gas2nask.exe|たぶんOK|3日目|28日で問題発生?| |
| + | |obj2bim.exe|ほぼOK|3日目|OK| |
| + | |cc1.exe|ほぼOK|3日目|OK| |
| + | |bin2obj.exe|ほぼOK|5日目|OK| |
| + | |makefont.exe|ほぼOK|5日目|OK| |
| + | |golib00.exe|ほぼOK|27日目|OK| |
| + | |bim2bin.exe|たぶんOK|29日|| |
| + | |aksa.exe|たぶんOK|×|| |
| + | |aska.exe|たぶんOK|×|| |
| + | |cpp0.exe|たぶんOK|×|| |
| + | |naskcnv0.exe|たぶんOK|×|| |
| + | |nothing.com|OK|×|| |
| + | |osalink1.exe|たぶんOK|×|| |
| + | |sjisconv.exe|たぶんOK|×|| |
| + | |comcom.exe|×|×|| |
| + | |doscmd.exe|×|×|| |
| + | |sartol.exe|×|×|| |
| + | |t5lzma.exe|×|×|| |
| + | |upx.exe|×|×|| |
| + | |wce.exe|×|×|| |
| | | |
- | -同じパターン。../intel/Makefileも。 | + | -そんなわけで、これを参考にあとはかいつまんでチェックしていこうっと。 |
- | こらもう書かんでも解るやろ | + | -(あれでも、他のツール。make以外でもし使用されてたら誰か教えてチョンマゲ。もういっかいぜーんぶ読むのはキツイです〜) |
| | | |
- | -さらに ../go_lib/Makefile。 | + | *5日目 [#aba1a18a] |
- | こらもう書かんでも解るやろ | + | -さてそんなわけで、大変申し訳ありまへんがすっ飛ばして5日目〜。 |
| + | -P110。 05_day/harib02i。 |
| + | --わはは! あっさりOKじゃん!!(^^ |
| + | --そんなわけでbin2objとmakefontはOK〜。 |
| + | --せっかくなのでスクリーンショット掲載〜 |
| + | #ref(bsd_s.jpg) |
| + | --デカイのは[[ここ:http://thebbl.hideyosi.com/modules/bwiki/index.php?plugin=attach&pcmd=open&file=bsd1.jpg&refer=FreeBSD%A4%C7%A4%CF%A4%EA%A4%DC%A4%C6%A1%AA]]クリック〜 |
| | | |
- | おぉぉ! これで出来上がり〜! これで、以下はOK! | + | -ついで〜。Linuxでもできました〜。 |
- | -cpp0 | + | #ref(lin_s.jpg) |
- | -cc1 | + | --デカイのは[[ここ:http://thebbl.hideyosi.com/modules/bwiki/index.php?plugin=attach&pcmd=open&file=lin1.jpg&refer=FreeBSD%A4%C7%A4%CF%A4%EA%A4%DC%A4%C6%A1%AA]]クリック〜 |
- | -cc1plus | + | |
| | | |
- | **toolstdc [#p6b7c63f] | |
- | 次にtools。これはFreeBSD環境なので当然toolstdcだね。 | |
- | $ cd ../toolstdc | |
- | $ gmake | |
| | | |
- | -たはは。こんなエラーが。 | + | *10日目 [#n1bf6d7f] |
- | gcc -Wl,-s -o nask.exe nask.obj ../nasklib/nasklib.lib \ | + | -さて〜。なんとな〜く10日目もやりますか。 |
- | ../go_lib/go_lib.lib ../go_lib/stdin.o | + | -P210。10_day/harib07d。(マウスが動いてるので楽しみ) |
- | gcc: ../nasklib/nasklib.lib: No such file or directory | + | --うほほ〜い! これも問題なーし!(マウス動く〜(^^ ) |
- | gmake[1]: *** [nask.exe] Error 1 | + | |
| | | |
- | -これはもう前回と同じパターン。../nasklib/nasklib.libがない。なんでかっていうとコンパイルできてないから。さっそく../nasklib/Makefileを編集。 | |
- | こらもう書かんでも解るやろ | |
| | | |
- | -さてgmake・・・なんだけど、ここでもやっぱり.exeになるよね。おなじくMakefileを書き換え。 | + | *15日目 [#d4742b59] |
- | -こらもう書かんでも解るやろ・・・っと思ったけど、ちょっとアレなので載せとこう。 | + | -どーんとすっとばして15日目〜。 |
- | include ../include/rules.mak | + | -P307。15_day/harib12g。(いよいよマルチタスク!) |
| + | --いけたいけた〜。よーし!どんどんいくぞ〜! |
| | | |
- | all : | + | *20日目 [#g10d6361] |
- | $(MAKER) golib00 sjisconv gas2nask nask naskcnv0 | + | -さらにすっとばして20日目〜。 |
| + | -P415。20_day/harib17h。 |
| + | --これまた問題な〜し |
| | | |
- | clean : | + | *25日目 [#v20669aa] |
- | -$(DEL) *.obj | + | -ラストスパート。25日目〜。 |
- | -$(DEL) golib00 sjisconv gas2nask nask naskcnv0 | + | -P536。25_day/harib22j。そうだ!そのとおり!もっとOSらしく! |
| + | --問題な〜し。アプリも動くぞ〜! |
| | | |
- | golib00 : golib00.obj Makefile ../include/rules.mak | + | *28日目 [#n8b2d3d7] |
- | $(LINK) -o $@ $@.obj | + | -P622。28_day/harib25g。 |
| + | --ありゃりゃ? ちょっとおかしいぞ?これ? |
| + | --あーー! そうか!Makefileで下の階層に行くようになったのか!だからうまくいかなかったのだ! |
| + | --シコシコと各Makefileを直してと・・・ |
| + | --いけたーーー!-------------(゚∀゚)------------- |
| | | |
- | sjisconv : sjisconv.obj Makefile ../include/rules.mak | + | *29日目 [#kb429271] |
- | $(LINK) -o $@ $@.obj | + | -P644。29_day/harib16e。 |
| + | --エラーーーーーー!!!! |
| + | --ちょっとどうしてもアカンエラーが出たのでMakefile細工して無理やり通したけど、コンソールで文字がまったく表示されないって状態になっちゃった・・・・ |
| + | --なんじゃろう??。これ? gas2naskの問題?それとも?? |
| + | ../../../z_tools/gas2nask -a tek.gas tek.nas |
| + | skip:shrdl $16, %edx, %eax |
| + | gmake[1]: *** [tek.nas] Error 1 |
| | | |
- | gas2nask : gas2nask.obj Makefile ../include/rules.mak | |
- | $(LINK) -o $@ $@.obj | |
| | | |
- | nask : nask.obj Makefile ../include/rules.mak | |
- | $(MAKEC) ../nasklib | |
- | $(MAKEC) ../go_lib | |
- | $(LINK) -o nask nask.obj ../nasklib/nasklib.lib \ | |
- | ../go_lib/go_lib.lib ../go_lib/stdin.o | |
| | | |
- | naskcnv0 : naskcnv0.obj Makefile ../include/rules.mak | + | -えーーっと。tek.cは29日から導入された圧縮の関数だよね。で、これは |
- | $(MAKEC) ../go_lib | + | --cc1 を使い、.gasに変換 |
- | $(LINK) -o naskcnv0 naskcnv0.obj ../go_lib/go_lib.lib | + | --gas2naskを使い、.nas に変換。 |
- | | + | -で、このときにエラーが出ていると・・・ |
- | これで出来上がり〜! これで、以下はOK! | + | -どれどれ・・・.gasって、テキストで覗けるんだっけ?? |
- | -golib00 | + | -おお!覗ける。で、あったあった・・・。出来上がっている.gasの925行目。 |
- | -sjisconv | + | : |
- | -gas2nask | + | movl -16(%ebp), %eax |
- | -nask | + | mull %ecx |
- | -naskcnv0 | + | shrdl $16, %edx, %eax <-これだ! |
- | | + | shrl $16, %edx |
- | **ASKA [#vf74888c] | + | movl %eax, -32(%ebp) |
- | さて久しぶりのアスカたん。 | + | movl %edx, -28(%ebp) |
- | | + | : |
- | -askaのディレクトリに移動。 | + | |
- | $ cd ../../aska/src | + | |
- | -よし。一発メイク! お! やっぱりエラー。(^^; | + | |
- | g++ -O2 -I. -DLINUX -c main.cpp | + | |
- | In file included from parser.h:21, | + | |
- | from main.cpp:1: | + | |
- | module.h: In member function `void Module::Release()': | + | |
- | module.h:39: error: ISO C++ forbids cast to non-reference type used as lvalue | + | |
- | | + | |
- | -該当部分をみてみるとこうなっている。 | + | |
- | | + | |
- | | + | |
- | #ifdef WINVC | + | |
- | void Release(void){ DELETEPTR_SAFE(lpMdlAdr); dwMdlSize=0; lpMdlPos=\ | + | |
- | NULL; } | + | |
- | #else | + | |
- | void Release(void){ DELETEPTR_SAFE((unsigned char*)lpMdlAdr); dwMdlS\ | + | |
- | ize=0; lpMdlPos=NULL; } | + | |
- | #endif | + | |
- | | + | |
- | -さて。これどういうことかってーと、どうも新しいgccでは、「左辺をキャストしてはいかん!右辺でやりなされ!」ということになったらしいのでそのエラーらしいです。 | + | |
- | | + | |
- | -オイラはこれのやり方がわかりませんでしたが、キャストは最悪しなくてもいいということを信じて、型キャストをはずしてしまいました。 | + | |
- | | + | |
- | #ifdef WINVC | + | |
- | void Release(void){ DELETEPTR_SAFE(lpMdlAdr); dwMdlSize=0; lpMdlPos=\ | + | |
- | NULL; } | + | |
- | #else | + | |
- | void Release(void){ DELETEPTR_SAFE(lpMdlAdr); dwMdlS\ | + | |
- | ize=0; lpMdlPos=NULL; } | + | |
- | #endif | + | |
- | | + | |
- | -・・・なんか別の文句を言ってきてますが、とりあえずこれで進んでます。(^^; | + | |
- | -ええと・・これでOKです。ASKAが出来上がりました。 | + | |
| | | |
- | おっけ〜。これでaskaは完成。 | + | -さて、ここでしばし考察。 |
- | -aska | + | --これ、Windows版だとエラーにならないんだよね?(当たり前だけど) |
| + | --Windows版のほうだと、このtek.gasはどうなっているんだろう。 |
| + | --もし同じなら、cc1は問題なし。gas2naskに問題があるといえる。違っていたらcc1に問題があるということかな??? |
| + | --どれどれっと・・・ |
| + | --がーーん! ''まったく同じ''じゃないか! そうすると、移植版のgas2naskに問題があるのか! |
| | | |
| + | -・・・おんやあぁぁぁ???? 同じパッチで作ったLinux版だと、このエラーは出てこないぞ??? |
| + | --Linux版。これはVineLinux4.0。gccは |
| + | $ gcc -v |
| + | /usr/lib/gcc-lib/i386-vine-linux/3.3.6/specs から spec を読み込み中 |
| + | コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man |
| + | --infodir=/usr/share/info --enable-shared --enable-threads=posix |
| + | --disable-checking --with-system-zlib --enable-__cxa_atexit |
| + | --host=i386-vine-linux |
| + | スレッドモデル: posix |
| + | gcc バージョン 3.3.6 release (Vine Linux 3.3.6-0vl7) |
| + | --FreeBSD版は5.5で |
| + | $ gcc -v |
| + | Using built-in specs. |
| + | Configured with: FreeBSD/i386 system compiler |
| + | Thread model: posix |
| + | gcc version 3.4.2 [FreeBSD] 20040728 |
| | | |
- | **aksa1a [#k5525793] | + | -ふーむ・・・gccのバージョンの問題だろうか???Linuxのほうを3.4にして実験してみるかな?? |
- | さてaksa1aいくぞ〜。 | + | -いやぁ!待った待った!! Linux版でも、エラーこそ出ないでコンパイルできたけど、やっぱりコンソールがなにも表示されない状態になっている!!!やっぱりこれはgas2naskで問題が起こっているのか!? |
- | -ふーむ。Makefileを見ると、これはgoでのコンパイル用のものらしい。 | + | |
- | -うーむ。単独の.cだし、そのままgccで当てちゃうんでいいのかな。 | + | |
- | $ gcc -o aksa aksa.c | + | |
- | -とりあえずこれでできたようだ。(実験とか出来ないかな・・・) | + | |
- | -むむむ!! memo.txt に書いてあるテストをやったらそのまま出てきたぞ? OKみたい!!(^^ | + | |
- | $ aksa helloc4.org 0 0 1 5 | + | |
- | file-ofs EIP | + | |
- | 00000000 00000000 2E 8B 62 20 ESP = (int) [CS:EDX + 0x20]; | + | |
- | 00000004 00000004 8B FC EDI = ESP; | + | |
- | 00000006 00000006 EB 20 goto 0x00000028; | + | |
- | 00000008 00000008 47 EDI++; | + | |
- | 00000009 00000009 55 PUSH(EBP); | + | |
| | | |
- | これでaksaはできた〜。 | + | -むむむーー! gas2naskの問題、解決かな??? (^^ |
- | -aksa | + | -コンパイルもエラーがなくなった!。これまでにあった、コンソールの文字が表示されない問題もクリアした。これでいけたーーーー! |
| + | -・・・っとどっこい! (世の中そんなに甘くない!) |
| + | -5lzmaがないってエラーが出てる・・・。このエラーを履きながらも、コンパイルは無事に進んでくれるんだけど、今度はすべての.hrbが「.hrb file format error.」と言われ、実行できない。 |
| + | -5lzmaを移植せにゃならんか!!。たしかこれ、すんげーエラー吐いて手が付けられなかったんじゃなかったっけ・・・(汗 |
| | | |
| | | |
- | **まとめて一丁! [#sa35d72b] | + | -ぐはぁ! キターーー! |
- | えーと。これらはgcc一発でなんかできそうなので一気に。 | + | -なんとあっきぃさんが見事5lzmaの移植を完了! |
| + | -あわせてあっきぃさんによるbim2binの修正がうまくいき、なんとこの問題は解決!!!! |
| + | -うほ! 29_day/harib26b から止まっていた移植がすすむ!動作確認!!! |
| + | -どすこーーーい!! 29日目、完了!!! |
| | | |
- | -おのおののディレクトリに降りてやってね〜。 | |
- | $ cd bim2bi4w | |
- | $ gcc -o bim2bin bim2bin.c | |
| | | |
- | $ cd ../bim2hrb | |
- | $ gcc -o bim2hrb bim2hrb.c | |
| | | |
- | $ cd ../bin2obj0 | |
- | $ gcc -o bin2obj bin2obj.c | |
| | | |
- | $ cd makefont | |
- | $ gcc -o makefont makefont.c | |
| | | |
- | $ cd osalink1 | |
- | $ gcc -o osalink1.c osalink | |
| | | |
| | | |
- | 多分これでOKだと思います〜。 | + | *30日目 [#n28c4f03] |
- | -bim2bin | + | -いよいよラスト〜! はたして!!! |
- | -bim2hrb | + | -P678。30_day/harib27f。ラストーー! |
- | -bin2obj | + | -キター!問題ねーー! |
- | -makefong | + | ---- |
- | -osalink1 | + | ~ |
| + | ~ |
| | | |
- | **doscmd [#bee57c3d] | + | CENTER:SIZE(25){--- はりぼてOS。移植、全て完了! ---} |
- | doscmd。えーっと。これのMakefileを見ると完全にgoなどでコンパイルすることが前提になってますなぁ・・・(^^; | + | ~ |
- | -makefileを追いかけてみる。 | + | ~ |
- | --.cファイルを、sjisconvを使って.caファイルに。 | + | ~ |
- | --.caファイルを、goのcc1で.gasに。 | + | |
- | --.gasを、gas2naskを使って.nasに。 | + | |
- | --.nasを、naskを使って.objに。 | + | |
- | --できあがった.objをld.exeを使い、libmingw.lib とリンクして実行ファイル | + | |
- | -・・・とまあ、こういう流れだよね。これ。 | + | |
- | -ちょっとまった。libmingw.libって・・・・ | + | |