6

我正在尝试通过 telnet 在 Linux 机器上安装 Cppcheck。我有 cppcheck-1.67.tar 文件并解压它。我没有看到任何可以为我安装它的东西。我以正确的方式接近这个吗?

4

5 回答 5

6

实际发布日期为该答案。

  1. 从那里下载文件https://sourceforge.net/projects/cppcheck/

  2. 转到用于下载的文件夹

    cd ~/Downloads/
    
  3. 解压存档

    tar -xvf cppcheck-1.76.1.tar.bz2
    
  4. 进入解压文件夹

    cd cppcheck-1.76.1/
    
  5. 以root身份安装包

    sudo make install
    
  6. 检查结果

    $ which cppcheck
    /usr/bin/cppcheck
    
  7. 测试它

    $ touch simple.c
    $ echo "int main(){ int a; a + 1; return 0}" > simple.c
    $ cppcheck simple.c
    Checking simple.c ...
    [simple.c:1]: (error) Uninitialized variable: a
    

该软件包也存在于标准存储库中。

$ aptitude search cppcheck
p   cppcheck                      - tool for static C/C++ code analysis

测试环境

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:    8.6
Codename:    jessie
$ uname -a
Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux
于 2016-12-16T08:33:56.710 回答
2

说明在readme.txt文件中。简短的回答是make install

当您可以使用发行版的包管理器时,请记住永远不要从 tar 文件中安装东西。

于 2014-12-18T20:38:52.760 回答
1

readme.txt 文件没有提到“make install”。

看起来提供的 Makefile 很无聊:

  1. 它通过“CFG=”参数进行编译,没有 DESTDIR

  2. 但是“make install”在 DESTDIR 之前添加到 CFGDIR

就我而言,我编辑了 Makefile 以从 make install 中删除 DESTDIR,cppcheck 对此很满意。

于 2015-04-07T16:46:42.503 回答
1

对我来说,在Ubuntu 18.04 (Bionic Beaver)上的 Docker 中神奇的线条如下:

RUN cd /tmp \
    && git clone https://github.com/danmar/cppcheck.git \
    && cd cppcheck \
    && git checkout 1.72 \
    && make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes install \
    && cd /tmp \
    && rm -rf /tmp/cppcheck \
    && ldconfig

我假设以下内容适用于任何版本。我不确定将配置安装到哪里有意义。这对我有用:

make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes install
于 2018-12-12T13:54:44.170 回答
0

如果您没有sudo特权,您可以按照@Seti Volkylany 的回答,将步骤 5 替换为

OUT_PATH=/home/user/bin  # target location of binary
make SRCDIR=build CFGDIR=~/Downloads/cppcheck-1.76.1/cfg PREFIX=$OUT_PATH
make install CFGDIR=$OUT_PATH/cppcheck-1.76.1/cfg PREFIX=$OUT_PATH
于 2019-06-24T15:45:09.983 回答