Можно ли указать путь к 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"
],
Другие вопросы по тегам