cppcheck std.cfg не найдена ошибка, когда файл std.cfg доступен
Если я запускаю свой cppcheck, я получаю следующую ошибку: cppcheck ListLib.c (информация) Не удалось загрузить std.cfg. Ваша установка Cppcheck не работает, пожалуйста, переустановите. Двоичный файл Cppcheck был скомпилирован с CFGDIR, установленным в "/usr/bin/cfg", и поэтому будет искать std.cfg по этому пути.
Система: opensuse13, версия cppcheck: cppcheck-1.64, скомпилированная с: make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes
проверка наличия файла: ls /usr/bin/cfg: gtk.cfg posix.cfg qt.cfg sdl.cfg std.cfg windows.cfg
где cfg: cfg: / usr / bin / cfg
whereis std.cfg: std: /usr/bin/cfg/std.cfg
cat std: /usr/bin/cfg/std.cfg выдает вывод из этого файла
Трассировки стека:
lstat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
stat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
open("std.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)
open("cfg/std.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "(information) Failed to load std"..., 213) = 213
write(2, "\n", 1) = 1
exit_group(1) = ?
+++ exited with 1 +++
работает переход на каталог / usr / bin: Проверка /.../ListLib.c
cppcheck --check-config ListLib.c: выдает ту же ошибку и работает просто отлично, если я делаю это в / usr / bin /
Ладно, люди, которые заходят на эту страницу, работают с файлами cfg в моей домашней папке:
сделать SRCDIR = построить CFGDIR=~/cppcheck_cfg и затем перехватить
sudo make install
5 ответов
Я тоже столкнулся с той же проблемой.
Решение:
$ make SRCDIR=build CFGDIR=/usr/share/cppcheck/
$ sudo make install CFGDIR=/usr/share/cppcheck/
Получил предложения от членов сообщества cppcheck и узнал, что "make install" также требует передачи опции CFGDIR.
make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes
make install CFGDIR=/usr/bin/cfg
У меня была такая же проблема несколько дней назад, и я решил ее, изменив способ запуска make-файла на cppcheck.
Я использую версию Linux Red Hat, а версия cppcheck - 1.65.
make SRCDIR=build CFGDIR=/home/###/####/cppcheck-1.65/cfg/ && make install
Я не особо разбирался в деталях, но make-файл cppcheck выглядит так, будто они очищают obj и собирают cppcheck, включая местоположение cfg, с помощью первой команды make
make SRCDIR=build CFGDIR=/home/###/####/cppcheck-1.65/cfg/ &&
а вторая команда make будет распространять cppcheck в /usr/bin/ location.
make install
Теперь все, что вам нужно сделать, это настроить bash.
Проверьте разрешения, с file /usr/bin/cfg/std.cfg
, чтобы убедиться, что у вас есть права доступа к файлу конфигурации, который, по вашему мнению, он должен пытаться прочитать.
Затем, если это не удалось, запустите cppcheck под strace, чтобы найти системный вызов, который не работает: strace -o /tmp/strace.out cppcheck ListLib.c
,
Как сказал @prabhugs, я сделаю больше описания. В исходном коде github, cppcheck, рекомендуется, чтобы синтаксис make был:
$ make SRCDIR=build CFGDIR=cfg HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function
где опция "CFGDIR" - это направление, которое вы можете указать. Например:
$ make SRCDIR=build CFGDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function
И тогда вы можете использовать этот синтаксис:
$ sudo make install CFGDIR=/usr/share/cppcheck/
после этого шага я считаю, что вы можете наслаждаться cppcheck.
Я столкнулся с той же проблемой, запустив cppCheck GUI в каталоге после компиляции его на Mac с Qt Creator и запуска версии GUI. Я решил проблему, скопировав "std.cfg" в папку приложения: Contents/MacOS. Для доступа к содержимому необходимо щелкнуть правой кнопкой мыши приложение cppcheck-gui. Кажется, можно поместить его рядом с файлом cppcheck-gui в ту же папку, в которой он должен быть проверен в первую очередь. Файл "std.cfg" находится в папке cfg.