先日 Ubuntu 23.04にアップデートしたら clangdが動かなくなり, Emacsの eglotや VScodeの C++の補完等が一切効かなくなってしまった. その修正方法のメモ.
問題
clang, clang++が標準ヘッダファイルを見つけることができずファイルを解析できなくなってしまっていた.
原因
clang, clang++の include search pathが GCC 13のものになっており, GCC13がインストールされていないことが原因であった. clang++ -v
で確かめてみると, GCC13のヘッダファイルを見ていることが確認できる.
% clang++ -v test.cpp #include <...> search starts here: /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13 /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/x86_64-linux-gnu/c++/13 /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/backward /usr/lib/llvm-15/lib/clang/15.0.7/include /usr/local/include /usr/include/x86_64-linux-gnu /usr/include
なので gcc-13をインストールすることで問題は解消した
# gcc-13も入るので, g++を入れておく sudo apt install g++-13
しかし Ubuntu 23.04の標準の gccは 12だし, gcc 13はそもそもインストールしていなかったのにその場所を見るというのも変である.
自分の環境による問題かは不明だが, これで問題は解消し, eglotも VSCodeも問題はなくなった.