2011.09.15

【Perl】LWP::Protocol::httpsインストール時の問題

WWW::Mechanizeを使ってhttpsへアクセスするにはLWP::Protocol::httpsが必要となるのでインストールします。

何も考えずcpan経由でPerlへインストールします。

# cpan
> install LWP::Protocol::https

そうするとこんな感じでエラーになる。

cc  -shared -O2 -L/usr/local/lib -fstack-protector SSLeay.o  -o blib/arch/auto/Crypt/SSLeay/SSLeay.so   \
           -L/usr/local/ssl/lib -lssl -lcrypto          \

/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libssl.a: could not read symbols: Bad value

どうも内部で使っているNet-SSLeayがこけてしまっているらしい。

Net-SSLeayはOpenSSLを使用しているらしくその内部ライブラリがよろしくないようです。

てことでOpenSSLを手動で入れなおし。
解凍後からの処理はこんな感じ。

$ ./config --shared
$ make
# make install

--sharedをつけると-fPICオプションをつけてコンパイルしてくれるらしい。

yumとかのパッケージだと-fPICオプションがついていないぽい。
これをつけないとNet-SSLeayでは使用できないようです。
Link:Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか - bkブログ
Windowsで言うところのDLLじゃないと動かないみたいな問題なのでしょう。

これで、上記の手順で問題なくコンパイルできました。

Pocket

ニャッキ格闘列伝 > プログラム >

前の記事:
次の記事:

コメントリスト

コメントなし

コメント



*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

こんなタグが使えるみたいよ:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>