09/08/24: libcURLのVisual Studioでのビルドのメモ
…どういうことだ、窓を開けてたら肌寒い。
これ8月の気候じゃなくね?
昨日気になってた、libcURLをとりあえずビルドして、HTTPを取得するサンプルコードを実行してみた。
HTTPS通信は後日試してみる。
■libcURL
◆公式
◆ライセンス
MITベースらしい。
docs¥LICENSE-MIXINGには、内部で使用するKRB4が、オリジナルBSDスタイルライセンスだから、KRB4を有効にしてGPLのソフトとリンクさせて配布しないで、みたいなこと書いてる。
誤訳だったらゴメン。
docs¥LICENSE-MIXINGには、内部で使用するKRB4が、オリジナルBSDスタイルライセンスだから、KRB4を有効にしてGPLのソフトとリンクさせて配布しないで、みたいなこと書いてる。
誤訳だったらゴメン。
■Visual Studio 2005でビルド
doc¥INSTALLの記述にちょっとウソがあるっぽい。
以下、Visual Studio 2005 standardでビルドしてみて最終的にビルドが通った手順。
1.コマンドプロンプトを開く。
ソースをダウンロードして、解凍。
コマンドプロンプトを開いて、そのディレクトリに移動。
コマンドプロンプトを開いて、そのディレクトリに移動。
2.vcvarsall.bat実行
ウチのVS2005Standardの環境では以下のような感じ。
"Path¥to¥Microsoft Visual Studio¥VC¥vcvarsall.bat"
"Path¥to¥Microsoft Visual Studio¥VC¥vcvarsall.bat"
3.OpenSSLのパスを環境変数に指定
SSL通信をOpenSSLにさせるときは、ビルド前にOpenSSLへのパスを、環境変数[OPENSSL_PATH]に設定してあげる。
※このとき指定するパスは、インストール先のトップディレクトリではなく、ビルド環境のトップディレクトリである必要があるみたい。
何故かはわかんない。
set OPENSSL_PATH=Path¥to¥OpenSSL
※このとき指定するパスは、インストール先のトップディレクトリではなく、ビルド環境のトップディレクトリである必要があるみたい。
何故かはわかんない。
set OPENSSL_PATH=Path¥to¥OpenSSL
4.Makefile修正
libcURLトップディレクトリにあるMakefileを開き、VC=vc6の部分を、対象のVCバージョンに設定してやる。
VC=vc8
VC=vc8
5.lib¥Makefile.vcX修正
lib にあるMakefile.vcX(Xはバージョン番号、自分はvc8)を開き、以下の部分を修正。
HTTP以外の通信が必要ないときは、フラグを追加。
他のフラグについては、docs¥INSTALLを参照してください。
CFLAGS = ~ /DHTTP_ONLY ←追加
ビルド対象ファイル追加。
そのままDLLビルドすると、リンクエラーが発生する。
エラー対象関数の実装があるCファイルをビルド対象に追加することで、ビルドが通る。
X_OBJS= ~
$(DIROBJ)¥nonblock.obj ¥ ←行追加
HTTP以外の通信が必要ないときは、フラグを追加。
他のフラグについては、docs¥INSTALLを参照してください。
CFLAGS = ~ /DHTTP_ONLY ←追加
ビルド対象ファイル追加。
そのままDLLビルドすると、リンクエラーが発生する。
エラー対象関数の実装があるCファイルをビルド対象に追加することで、ビルドが通る。
X_OBJS= ~
$(DIROBJ)¥nonblock.obj ¥ ←行追加
6.ビルド
docs¥INSTALLにはOpenSSLのDLLとリンクするDLL出力は 'nmake vc-ssl-dll' って書いてるみたいなんだけど、多分間違い。
上記だと、スタティックライブラリファイルのみが出力された。
nmake vc-dll-ssl-dll
インクルードパスとライブラリパスにOpenSSLのパスを追加するのも忘れずに。
ビルドが正常に終了すると、以下のファイルが lib に出力される。
libcurl.dll
libcurl_imp.lib
libcurl_imp.exp
上記だと、スタティックライブラリファイルのみが出力された。
nmake vc-dll-ssl-dll
インクルードパスとライブラリパスにOpenSSLのパスを追加するのも忘れずに。
ビルドが正常に終了すると、以下のファイルが lib に出力される。
libcurl.dll
libcurl_imp.lib
libcurl_imp.exp
7.実行してみる
残念ながら、VC環境ではmake testのようなことはできないみたい。
見つけられなかっただけかもしれないけど。
とりあえずの動作確認に、docs¥examples¥simple.cあたりを実行した。
どこでGETの結果を見るんだろうとか思いながら、何も考えずに実行したら、標準出力にHTMLが出力された。
どうやらHTTPは正しく動いてるみたい。
HTTPSは後日確認しよう。
少なくともsession_idを操作するインターフェースはあるみたいだし、ちょっと期待。
見つけられなかっただけかもしれないけど。
とりあえずの動作確認に、docs¥examples¥simple.cあたりを実行した。
どこでGETの結果を見るんだろうとか思いながら、何も考えずに実行したら、標準出力にHTMLが出力された。
どうやらHTTPは正しく動いてるみたい。
HTTPSは後日確認しよう。
少なくともsession_idを操作するインターフェースはあるみたいだし、ちょっと期待。
TrackBack
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。
もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
