Этот вопрос задавали и отвечали кучу раз, но ни один из ответов, похоже, не работает для меня.
Я пытался настроить clangd в nvim lsp. Я использовал bear для генерации compile_commands.json, но clangd по-прежнему выдает мне ошибки, говорящие о том, что он не может найти стандартные заголовки библиотеки.
Вот минимальный пример:
основной.cpp:
#include <iostream>
using namespace std;
int main(){
cout << "hello clangd";
return 0;
}
Затем я запускаю: bear -- g++ main.cpp, который компилирует и создает compile_commands.json с таким содержимым:
[
{
"arguments": [
"/usr/bin/g++",
"-c",
"main.cpp"
],
"directory": "/home/xxx/tmp/hello_clangd",
"file": "/home/xxx/tmp/hello_clangd/main.cpp"
}
]
Я также пытался скомпилировать с использованием флага cmake для генерации compile_commands.json, но у меня возникла та же проблема. Я могу получить файл, но языковой сервер по-прежнему не работает должным образом.
Я смог использовать clang с vim-pio, поэтому кажется, что он не сломан. что мне не хватает.
Обновлено: я на Ubuntu кстати





Я сам нашел решение с помощью clang++ по инструкции здесь. Команда, которая работает для меня:
bear -- clang++ -I/usr/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -L /usr/lib/gcc/x86_64-linux-gnu/11 main.cpp
Это все еще немного сбивает меня с толку, поэтому я открыт для лучших решений и объяснений.
У меня была похожая проблема на Pop!_OS 22.04 LTS с использованием lunarvim 1.2. и Clang++/Clangd, кажется, ищет новейшие доступные библиотеки, поэтому вместо анализа каталога «11» (который содержал «libstdc++») он анализирует каталог «12» (который не содержит «libstdc++») для библиотек.
ls /usr/lib/gcc/x86_64-linux-gnu/
11 12
Я искал нужную мне версию.
apt search libstdc++
Проблема была решена после установки «libstdc++» для gcc версии 12 из репозитория apt.
apt install libstdc++-12-dev
Я использовал этот пост для решения проблемы
Да, это очень похоже на мою установку. Спасибо за ответ.