2012年5月13日日曜日

続:w3mのビルドの注意点

以前書いた w3mのビルドの注意点 という記事。
誤りがありました。
Boehm GCをインストールしてもそのままだとビルドできませんでした。
Str.o: In function `Strnew_charp':
/MinGW/msys/1.0/home/owner/w3m-0.5.3/Str.c:71: undefined reference to `bcopy'
Str.o: In function `Strnew_charp_n':
/MinGW/msys/1.0/home/owner/w3m-0.5.3/Str.c:100: undefined reference to `bcopy'
Str.o: In function `Strcopy':
/MinGW/msys/1.0/home/owner/w3m-0.5.3/Str.c:138: undefined reference to `bcopy'
Str.o: In function `Strcopy_charp':
/MinGW/msys/1.0/home/owner/w3m-0.5.3/Str.c:158: undefined reference to `bcopy'
Str.o: In function `Strcopy_charp_n':
/MinGW/msys/1.0/home/owner/w3m-0.5.3/Str.c:177: undefined reference to `bcopy'
Str.o:H:/MinGW/msys/1.0/home/owner/w3m-0.5.3/Str.c:199: more undefined reference s to `bcopy' follow
collect2: ld returned 1 exit status
make: *** [mktable.exe] Error 1
bcopy()がMinGWに入っていないのが原因のようです。
標準関数のmemcpy()とほぼ同じ機能の関数のようなので、bcopy()をmemcpy() に置き換えてやれば良いようです。

というわけでパッチつくりました
github.com/orumin

ついでにGitHubのアカウントも取得。
パッチの実行はmsys上でw3m-0.5.3のソースフォルダまで移動しパッチファイルを同じフォルダにおいて
$patch -p0 < w3m-0.5.3_mingw.patch
とすれば良いです。


ただしここで大きな問題が
 ここここによると、Boehm GCをmsys上でビルドし使用するとそもそもバグが発生するようです
よってStr.cのコンパイルが通ってもそのあとでmktableを実行するときにメモリエラーが出て動作が停止してしまうと思います。

functable.cを手打ちで作ってしまうかBoehm GCを修正してmktableを無事動作するようにする必要があるようです…

ということで私はしばらく諦めることにしました;;