Problem
Visual Studio Codeは素晴らしい開発環境です。
Windows/Mac/Linuxで動作するマルチプラットフォーム対応が売りですが、Linuxはディストリビューションが多すぎて、コアの部分の挙動が異なります。
原因として、システムに使われているモジュールの依存関係が牙をむきます。
自分は、Visual Studio Codeの言語拡張機能である、**C/C++**を使っていました。
Microsoft謹製のツールで信頼がおける、と思っていました。
しかし、Redhat Enterprise Linux 7では、この拡張は動きませんでした。
拡張機能である、CMake Tools経由でビルドしてみました。
CMakeTools extension was unable to initialize: [cmake-server] Failed to activate protocol version: “generator” is unset but required.
というエラーを吐いて、ビルドが停止します。
Why?
一見、CMakeToolsが悪いように思えます。
未確認ですが、CMakeToolsはServerModeで動作しているCMakeを経由して言語拡張にビルドを要求している?
ともかくとして、調べてみると、どうもGLibcのバージョンに問題があるようです。
CentOS7、RHEL7のGLibcは2.17がデフォルトでインストールされています。
1 | yum list installed | grep glibc |
ところが、C/C++言語拡張は2.18を要求します。
1 | ldd /home/xxxxxx/.vscode/extensions/ms-vscode.cpptools-0.12.2/bin/Microsoft.VSCode.CPP.Extension.linux |
この問題は、Issueとして報告されています。
解決に向けて取り組んでいるようですが、#19は2016年4月に報告されており、それからコメントが増え続けていますが、解決されていません。
Linuxのようにディストリビューションごとにコアのモジュールに大きく差が出てくると、かつてWindowsが陥ったDLL地獄のような問題は避けられないようですね。