在Ubuntu 22.04上执行atc转换时,报错:fatal error: 'cstdint' file not found

问题描述

在Ubuntu 22.04上执行atc转换命令时,报错:fatal error: 'cstdint' file not found。

图1 报错截图

可能原因

环境上安装了gcc的多个版本,ccec编译时,会寻找默认安装路径下高版本的gcc,但gcc高版本安装时缺失了文件,导致找不到cstdint头文件。

定位思路如下:

  1. 执行命令查看环境上gcc情况。

    1
    2
    cd /usr/lib/gcc/aarch64-linux-gnu
    ll
    

    查询结果如下图所示,存在gcc11和gcc12两个安装目录。

  2. 执行命令查询环境上的gcc版本。

    1
    dpkg -l | grep gcc
    

    查询结果如下所示,存在gcc 11和gcc 12两个版本。

  3. 检查各版本下是否包含头文件,发现仅gcc 11版本下存在头文件,路径如下所示。

    1
    /usr/include/c++/11/cstdint
    

解决措施

执行如下命令,卸载环境上的gcc 12,使用已安装的gcc 11进行编译。

1
apt remove gcc-12 libgcc-12-dev