Можно ли указать путь к libstdC++ в расширении clangd VS Code?
Я использую VS Code в качестве основного редактора кода для разработки на C++. Я использую удаленное расширение SSH от Microsoft для доступа к своей офисной рабочей станции из дома. Для автозаполнения и линтинга C++ я использую расширение clangd от LLVM. Политика компании не позволяет пользователям иметь доступ sudo к рабочим станциям, а библиотеки часто не последней версии.
Когда я пытаюсь запустить clangd, я получаю следующее сообщение об ошибке:
/lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /my/path/to/clangd)
Это, очевидно, означает, что версия libstdC++ слишком старая для версии clangd, которую я использую. Это легко исправить, добавив в LD_LIBRARY_PATH расположение самых последних библиотек gcc (часть нашей инструментальной цепочки компилятора), а затем запустив VS Code.
Однако теперь, когда я работаю удаленно, я не могу этого сделать, потому что VS Code установлен на моем ноутбуке, и я использую расширение SSH для доступа к коду на своей офисной рабочей станции. Глядя на страницу руководства для clangd, я не вижу способа указать путь к libstdC++, который я хочу использовать. Есть ли способ, кроме добавления библиотек в LD_LIBRARY_PATH при запуске / входе в систему, обойти эту проблему?
2 ответа
Я нашел способ, хотя и немного хитрый.
Экспорт нового LD_LIBRARY_PATH
на.zprofile (или эквивалент для вашей оболочки. Я использую zsh). Убедитесь, что на хосте нет запущенных серверов VSCode. Если есть, обязательно удалите их.
В файле settings.json добавьте следующую строку, чтобы сообщить VSCode, что вы хотите, чтобы оболочка была интерактивной оболочкой входа в систему:
"terminal.integrated.shellArgs.linux": ["-l", "-i"]
Работа сделана. Clangd теперь находит правильные библиотеки.
Другой способ сделать это - использоватьenv
в вашейsettings.json
следующее:
"clangd.path": "env",
"clangd.arguments": [
"LD_LIBRARY_PATH=<your_custom_path>",
"/path/to/my/clangd"
],