BUG的解决思路
-
- BUG描述:
- 解决方法:
-
- 首先最重要的一步:
- 第二步:正确设置gcc和g++的路径
-
- [方法一:使用本地系统中安装的 aarch64-linux-gnu-gcc 和 aarch64-linux-gnu-g++](#方法一:使用本地系统中安装的 aarch64-linux-gnu-gcc 和 aarch64-linux-gnu-g++)
- 方法二:下载使用官方指定的交叉编译工具
- 方法三:使用本地系统中安装的gcc和g++
- 注意:方法一、二、三运行前都需要找到`/home/firefly/second/rknn_model_zoo-2.3.0/build`路径,删除其下所有/相关文件夹,以免失败。
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++
- 查看本地系统中安装的 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++ 的地址路径。
- 设置GCC_COMPILER路径
在rknn_model_zoo-2.3.0文件根目录中打开终端,进入环境,输入:
bash
export GCC_COMPILER=/usr/bin/aarch64-linux-gnu
- 编译相应的C/C++ Demo
我这里编译的是resnet,平台是RK3588,系统架构为aarch64,故在终端输入:
bash
./build-linux.sh -t rk3588 -a aarch64 -d resnet
- 编译成功
在rknn_model_zoo-2.3.0文件夹下生成文件/install/rk3588_linux_aarch64/rknn_resnet_demo
,其中有可执行文件。
方法二:下载使用官方指定的交叉编译工具
- 下载解压交叉编译工具
(如果系统中已经装有交叉编译工具,请忽略此步骤)
不同的系统架构,依赖不同的交叉编译工具。下面给出具体系统架构建议使用的交叉编译工具下载链接:
- aarch64: 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
- armhf: https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz?revision=e09a1c45-0ed3-4a8e-b06b-db3978fd8d56\&rev=e09a1c450ed34a8eb06bdb3978fd8d56\&hash=9C4F2E8255CB4D87EABF5769A2E65733
- armhf-uclibcgnueabihf(RV1103/RV1106): https://console.zbox.filez.com/l/H1fV9a (fetch code: rknn)
下载交叉编译工具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
- 设置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
- 编译相应的C/C++ Demo
方法三:使用本地系统中安装的gcc和g++
这个方法需要修改build-linux.sh,进入该文件中找到所有CC
和CXX
,并修改为
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
中可以成功的。