Travis CIでlibstdc++のバージョンを変更する

Travis CIでプロジェクトをテストしようとしたところ、以下のようなエラーが出て止まりました。

https://travis-ci.org/KamataRyo/wms/jobs/165426659#L387

Travis CIのデフォルトのコンテナでは、古い標準C++ライブラリのlibstdc++がインストールされており、要求されているGLIBCXX_3.4.20が見つからないようです。

$ strings /usr/lib/x86_64-linux-gnu/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_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_DEBUG_MESSAGE_LENGTH

Travis CIの設定を変更し、十分新しいと思われるlibstdc++をインストールします。

.taravis.ymlAddonsディレクティブに以下の項目を記載し、toolchainの設定で使用するlibstdc++のバージョンを明示したところ、GLIBCXX_3.4.20は正しくロードされました。

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - libstdc++-4.9-dev
$ strings /usr/lib/x86_64-linux-gnu/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_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_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_DEBUG_MESSAGE_LENGTH

https://travis-ci.org/KamataRyo/wms/jobs/165431750#L384
ビルドもパスしています。やったね!

参考