CMake搭配Green Hills编译器生成的exe不兼容Win10无法运行如何解决
问题根因
该问题和CMake配置无直接关联,核心是编译器选型完全错误:
- 你使用的
C:/TCC/Tools/greenhills_ifx/comp_201815_5fp_WIN64是Green Hills为英飞凌(IFX)嵌入式芯片定制的TriCore架构交叉编译工具链。路径下的cxtri.exe/cctri.exe是运行在Windows主机上的编译前端程序,编译输出的目标指令集是TriCore架构(对应英飞凌AURIX系列车规MCU),并非你Win10设备使用的x86/amd64桌面架构。 - 这类交叉编译器不会链接Windows桌面系统原生运行库,生成的文件虽然是exe后缀格式,但文件头不符合Windows桌面可执行程序规范。你看到的属性页标注「最高仅支持Windows8」是系统识别非标准PE头给出的错误提示,不是兼容模式配置问题,这类文件本质就不是给Win10桌面环境运行的,启动报错是必然结果。
- CMake配置、make构建流程成功,仅代表代码语法符合编译器要求、链接步骤无语法错误,不代表生成的程序能在当前主机系统运行。
解决方案
根据你的实际需求二选一处理:
场景1:目标是在当前Win10 64位系统上运行HelloWorld程序
直接替换掉当前的嵌入式交叉编译器,使用面向Windows桌面平台的原生C++编译器即可,不需要额外增加特殊CMake配置:
- 可选原生编译器包括:
- MinGW-w64(和你当前选的
Unix Makefiles生成器完全适配) - MSVC(Visual Studio自带编译器,对应选择Visual Studio系列CMake生成器即可)
- 官方Clang for Windows
- MinGW-w64(和你当前选的
- 修改CMakeLists.txt,删除硬编码的嵌入式编译器路径配置:
# 删除以下两行错误的编译器路径配置 # set(CMAKE_CXX_COMPILER "C:/TCC/Tools/greenhills_ifx/comp_201815_5fp_WIN64/cxtri.exe") # set(CMAKE_C_COMPILER "C:/TCC/Tools/greenhills_ifx/comp_201815_5fp_WIN64/cctri.exe") - 清空之前的build构建目录,重新执行CMake配置,让工具自动检测系统内已安装的桌面原生编译器,重新构建出的exe即可直接在Win10上正常运行。
场景2:必须使用这套Green Hills工具链编译
这套工具链的编译目标是英飞凌嵌入式硬件,编出的程序本就不该在Win10桌面环境运行,需要烧录到对应型号的英飞凌开发板/硬件板卡上才能启动。如果需要在PC端调试该工具链编译的程序,需要安装Green Hills官方配套的Multi IDE及对应架构的目标模拟器,不能直接在Win10原生环境启动生成的exe文件。
内容的提问来源于stack exchange,提问作者Bruce
相关产品推荐
相关产品推荐

