wget windos版の生成 with vs2008


執筆:2008.04.16


□GNUさんから最新版をダウンロードしました。

ftp://ftp.gnu.org/pub/gnu/wget/
http://www.gnu.org/software/wget/

□opensslがない場合は、インストールします。

コンパイル済みのものが便利です。 
http://www.openssl.org/related/binaries.html

□VS2008がない場合は、無料版でいいのでC++をインストールします。

Visual Studio 2008 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/

準備ができたので始めます。


今回は、最新版はwget-1.11でしたのでそれを解凍しました

【初回または、OpenSSLのバージョンが変わった際に実施】

詳しくは、wget-x.xx\windows\READMEを読みます
OpenSSLのinclude\opensslとlibをコピーします
下記のコマンドは、間違うと大変なことになるので
エクスプローラーを使ってコピーした方がいいです。
  xcopy /S C:\OpenSSL\include\openssl\ "C:\Program Files\Microsoft Visual Studio 9.0\VC\include\openssl\"
xcopy /S C:\OpenSSL\lib\VC "C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\"
copy C:\OpenSSL\lib\VC\libeay32MD.lib "C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\libeay32.lib"
copy C:\OpenSSL\lib\VC\ssleay32MD.lib "C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\ssleay32.lib"

【さぁ生成です】

面倒なので私はバッチファイルで処理しています。

wget_win_build_VS2008.bat

@rem http://www.gnu.org/software/wget/
@rem http://ftp.gnu.org/gnu/wget/
@rem --------
@rem Cコンパイラが必要。
@rem OpenSSLが必要
@rem --------
@rem 作り方は、
@rem wget-x.xx\windows\READMEを読みます
@rem --------
@rem wget-x.xx\configure.bat
@rem Usage: configure [--borland | --mingw | --msvc]
@rem 
@rem 【msvc】
@rem ★生成します
@rem call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vsvars32.bat"
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
call configure --msvc
NMAKE


echo src\wget.exe ができあがります
@rem pause 


【不正な属性でタグが終わっていた場合】

不正な属性(属性名=値無し>)でタグが終わっていた場合、ダウンローしてくれません。
下記のようにすると読み込んでくれるようになりますが、
どうなんでしょう?。。。

手順
<html><meta></meta><body>
<p>wget -p "this page URL"</p>
<p>wget can not save image2</p>
image1 <img src="image1.png"><br>
image2 <img src="image2.png" alt=><br>
</body></html>
回避 
修正

GNU Wget 1.11
src\html-parse.c
947:  goto backout_tag;
 if (attr_value_begin == attr_value_end)
                  /* <foo bar=> */
                  /*          ^ */
-       goto backout_tag;
+       break;
予期しないデータの破損などをするおそれがあります
・変更は、自己責任でしましょう。
・説明書(ソースコードも)をよく読み理解しておきましょう