You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV v3.3.1 ARM交叉编译失败:未找到CMAKE_CXX_COMPILER

解决ARM交叉编译OpenCV 3.3.1时找不到C/C++编译器的问题

我来帮你搞定这个交叉编译时的编译器缺失问题——毕竟x86系统默认的编译器没法直接编译ARM架构的代码,下面是一步步的解决方案:

1. 先安装适配ODROID-XU4的ARM交叉编译工具链

ODROID-XU4基于ARMv7架构,支持硬浮点指令集,所以我们需要安装gnueabihf版本的交叉编译工具:

sudo apt-get update && sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

安装完成后,验证工具是否正常可用:

arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-g++ --version

如果能输出编译器的版本信息,说明安装成功。

2. 显式指定编译器重新运行CMake

你之前的CMake命令只指定了工具链文件,但工具链文件可能没正确识别我们刚安装的编译器,我们可以通过两种方式明确指定:

方式一:通过环境变量传递编译器信息

在cmake命令前直接设置CC和CXX环境变量:

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ..

方式二:通过CMake参数直接指定

把编译器名称作为参数传入cmake命令:

cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \
      -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \
      -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
      ..

3. (可选)修正工具链文件的默认配置

如果你不想每次都手动指定编译器,可以打开../platforms/linux/arm-gnueabi.toolchain.cmake文件,找到设置编译器的部分,把:

SET(CMAKE_C_COMPILER arm-linux-gnueabi-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabi-g++)

修改为:

SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

保存后再运行原来的cmake命令即可。

4. 清理旧缓存重新尝试

如果之前的CMake缓存已经存在,可能会干扰新的配置,建议先清理后再重新操作:

rm -rf /home/jhon/Programs/opencv-3.3.1/arm/*
cd /home/jhon/Programs/opencv-3.3.1/arm
# 然后运行上面的cmake命令

错误原因说明

交叉编译时,CMake不会使用系统默认的x86架构编译器,必须指定对应ARM架构的交叉编译器。你之前的工具链文件要么因为没安装对应编译器而找不到,要么默认指定的编译器名称和你安装的版本不符,导致CMake报错找不到C/C++编译器。

内容的提问来源于stack exchange,提问作者HMaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:39:52