Eclipse CDT配置交叉编译时找不到aarch64-xxlinux-linux-g++求助
解决方案
报错根因
你当前的报错是因为把编译参数和编译器路径捆绑写入了CXX变量,shell执行时会把整串带--sysroot参数的内容当成单一的可执行文件名去查找,自然会提示找不到文件。
需调整的配置项
拆分CXX变量与编译参数
将原来的CXX变量值改为仅编译器名:
把CXX = aarch64-xxlinux-linux-g++--sysroot=$(SDKTARGETSYSROOT)参数分别添加到编译选项和链接选项中:- CFLAGS(C文件编译选项)新增:
--sysroot=$(SDKTARGETSYSROOT) - CXXFLAGS(C++文件编译选项)新增:
--sysroot=$(SDKTARGETSYSROOT) - LDFLAGS(链接选项)新增:
--sysroot=$(SDKTARGETSYSROOT)
- CFLAGS(C文件编译选项)新增:
修正环境变量生效范围问题
桌面快捷方式启动的Eclipse默认不会加载用户shell配置文件(.bashrc/.zshrc等)里的环境变量,优先选择以下两种方式之一配置:- 直接在Eclipse项目属性的「C/C++构建 -> 环境」页面手动添加PATH、SDKTARGETSYSROOT、CXX、CC等变量
- 从已加载交叉编译环境变量的终端中启动Eclipse,让Eclipse继承终端的环境变量
补充Eclipse CDT专属交叉编译配置(更稳妥,无需依赖环境变量)
打开项目属性 -> 「C/C++构建 -> 工具链编辑器」,将当前工具链设置为「Cross GCC」,随后在「交叉设置」页面填写:- 交叉编译器前缀:
aarch64-xxlinux-linux- - 交叉编译器路径:
/opt/xxlinux/sysroots/x86_64-xxlinuxsdk-linux/usr/bin/aarch64-xxlinux-linux
- 交叉编译器前缀:
补充校验步骤
配置完成后可以在构建规则中临时添加一行echo $PATH $SDKTARGETSYSROOT,执行构建后查看输出的变量值是否符合预期,确认变量生效。
其他可选检查项
- 确认交叉编译器二进制文件有可执行权限,可手动执行
/opt/xxlinux/sysroots/x86_64-xxlinuxsdk-linux/usr/bin/aarch64-xxlinux-linux/aarch64-xxlinux-linux-g++ -v验证编译器本身可正常运行 - 确认CC变量也配置为对应C交叉编译器
aarch64-xxlinux-linux-gcc,避免C文件编译出错
内容的提问来源于stack exchange,提问作者user1538798
相关产品推荐
相关产品推荐

