CentOS 5.11 で SPDYを使いたい(その2 - GCCバージョンアップからの目的達成編)

More than 3 years have passed since last update.


前回の続き・・・

前回無事にApacheのバージョンアップができたので喜び勇んでmod_spdyをインストールした。

でも、ここでもつまずいたのでログを残しておきます。


mod_spdyのインストール

rpm持ってきてインストールするだけ簡単簡単!

$ wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_x86_64.rpm

$ sudo rpm -U mod-spdy-beta_current_x86_64.rpm
$ sudo service httpd restart

と思って速攻導入してみたら・・・Apacheが起動しない・・・

以下がエラーの内容

Starting httpd: httpd: Syntax error on line 214 of /etc/httpd/conf/httpd.conf: Syntax error on line 1 of /etc/httpd/conf.d/spdy.conf: Cannot load /usr/lib64/httpd/modules/mod_spdy.so into server: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib64/httpd/modules/mod_spdy.so)

[FAILED]

どうやら、/usr/lib64/libstdc++.so.6が古いためGLIBCXX_3.4.11が無いというエラーのようだ・・・困った。

確認したら確かにない・・・

$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_FORCE_NEW

調査の結果GCCを新しくすれば良いようだが、ここはCentOS 5。yumで簡単にとはいかない・・・

渋々ソースからコンパイルした

手順は、以下のページをそのままそっくり実行した。唯一の違いはバージョンが4.6.3って事くらい。

https://gcc.gnu.org/wiki/InstallingGCC

あと、makeに2時間くらい掛かりました・・・

GCCのビルド&インストールが完了したところで、インストールディレクトリをみると新しいlibstdc++.so.6.0.16ができてた。

念のため、中身も確認

$ strings $HOME/gcc-4.6.3/lib64/libstdc++.so.6.0.16 | grep GLIBCXX

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

できてる!

あとは、/usr/lib64にコピーしてシンボリックリンク作れば!

$ cp $HOME/gcc-4.6.3/lib64/libstdc++.so.6.0.16 /usr/lib64

$ ln -s libstdc++.so.6.0.16 libstdc++.so.6

ここまでやって、Apacheを再起動したら無事にSPDYが利用可能となりました!

CentOS 6を使えば本当に簡単に導入できるSPDYですがCentOS 5だとちょっと面倒でした。