toge's diary

コンピュータ関連の趣味をつらつらと。

Windowsで動きました!

「もしかして関数呼び出し規約の問題?」と考えて

ここらへんを読みながら調べてたんですが・・・。
もっと簡単なところでした。
分かったのはざっとこんな感じ。

  1. MinGWでコンパイルする。
  2. configure --prefix=/home/toge/tccと実行する。
  3. tcc_reallocate()で/home/toge/libtcc1.aをリンクしようとする。
  4. 生成されるコードは普通のWindowsプログラムなので/home/toge/tccそんなの解釈出来ない。
  5. でもエラー処理がないのでそのまま続行する。
  6. 中途半端なままtcc内の関数が呼ばれてIllegal Instruction例外発生。

つまるところ私のぼけですね。(T_T)
でもフェイルセーフでないのは確か。以下の改善が必要かな?

  • MinGWならWindowsのファイルシステムのパスにするようにconfigureを修正(どうやってやればいいんだろ?)
  • libtcc_test.cの実装にエラー処理を追加する。
  • というかそもそもlibtcc1.aの場所ぐらい動的に指定させろよ。

・・・時間が出来たらやろう。特に前者は調べないといけないし。

あっ、"cd /home/toge/tcc && pwd -W"ってやればいいのか。簡単じゃん。
long file nameでは表示されないけど。