RK3588上Linux系统编译C/C++ Demo时出现BUG:The C/CXX compiler identification is unknown

BUG的解决思路

BUG描述:

在RK3588板卡上,运行编译rknn_model_zoo-2.3.0中的C/C++ Demo时,出现BUG:

bash 复制代码
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
  The CMAKE_C_COMPILER:

    /home/firefly/second/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.


CMake Error at CMakeLists.txt:3 (project):
  The CMAKE_CXX_COMPILER:

    /home/firefly/second/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

  is not a full path to an existing compiler tool.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!
See also "/home/firefly/second/rknn_model_zoo-2.3.0/build/build_rknn_resnet_demo_rk3588_linux_aarch64_Release/CMakeFiles/CMakeOutput.log".
See also "/home/firefly/second/rknn_model_zoo-2.3.0/build/build_rknn_resnet_demo_rk3588_linux_aarch64_Release/CMakeFiles/CMakeError.log".

解决方法:

首先最重要的一步:

找到/home/firefly/second/rknn_model_zoo-2.3.0/build路径,删除其下所有文件夹(类似于build_rknn_xxx_demo_rk3588_linux_aarch64_Release的所有文件夹)。

第二步:正确设置gcc和g++的路径

方法一:使用本地系统中安装的 aarch64-linux-gnu-gcc 和 aarch64-linux-gnu-g++
  1. 查看本地系统中安装的 aarch64-linux-gnu-gcc 和 aarch64-linux-gnu-g++ 的路径
bash 复制代码
which aarch64-linux-gnu-gcc
which aarch64-linux-gnu-g++

如果输出/usr/bin/aarch64-linux-gnu-gcc/usr/bin/aarch64-linux-gnu-g++的结果就是本地aarch64-linux-gnu-gcc和aarch64-linux-gnu-g++ 的地址路径。

  1. 设置GCC_COMPILER路径
    在rknn_model_zoo-2.3.0文件根目录中打开终端,进入环境,输入:
bash 复制代码
export GCC_COMPILER=/usr/bin/aarch64-linux-gnu
  1. 编译相应的C/C++ Demo
    我这里编译的是resnet,平台是RK3588,系统架构为aarch64,故在终端输入:
bash 复制代码
./build-linux.sh -t rk3588 -a aarch64 -d resnet
  1. 编译成功
    在rknn_model_zoo-2.3.0文件夹下生成文件/install/rk3588_linux_aarch64/rknn_resnet_demo,其中有可执行文件。
方法二:下载使用官方指定的交叉编译工具
  1. 下载解压交叉编译工具

(如果系统中已经装有交叉编译工具,请忽略此步骤)

不同的系统架构,依赖不同的交叉编译工具。下面给出具体系统架构建议使用的交叉编译工具下载链接:

下载交叉编译工具aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz:

bash 复制代码
wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

解压缩下载好的交叉编译工具,记住具体的路径,后面在编译时会用到该路径:

bash 复制代码
tar xvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz
  1. 设置GCC_COMPILER路径

在rknn_model_zoo-2.3.0文件根目录中打开终端,进入环境,输入:

bash 复制代码
export GCC_COMPILER=/home/firefly/second/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu
  1. 编译相应的C/C++ Demo
方法三:使用本地系统中安装的gcc和g++

这个方法需要修改build-linux.sh,进入该文件中找到所有CCCXX,并修改为

bash 复制代码
# 第一处
export CC=gcc
export CXX=g++
# 第二处
echo "CC=gcc"
echo "CXX=g++"

保存后编译相应的C/C++ Demo。这个方法在rknn_model_zoo-2.3.0中可能会失败,但在rknn-toolkit2-2.3.0/rknpu2中可以成功的。

注意:方法一、二、三运行前都需要找到/home/firefly/second/rknn_model_zoo-2.3.0/build路径,删除其下所有/相关文件夹,以免失败。

相关推荐
waving-black4 分钟前
利用frp和腾讯云服务器将内网暴露至外网(内网穿透)
linux·服务器·腾讯云·frp·内网穿透
天天爱吃肉82185 分钟前
新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
android·python·嵌入式硬件·汽车
stormsha15 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
草莓熊Lotso30 分钟前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
KyollBM36 分钟前
【CF】Day75——CF (Div. 2) B (数学 + 贪心) + CF 882 (Div. 2) C (01Trie | 区间最大异或和)
c语言·c++·算法
feiyangqingyun1 小时前
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
c++·qt·udp·gb28181
CV点灯大师1 小时前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
筏.k1 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC1 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows