编译gdbserver时出现头文件引用错误求助
解决交叉编译GDBserver时errno.h找不到的问题
问题排查与修复步骤
修正编译命令的CC参数
当前make CC=arm-poky-linux-gnueabi命令有误,CC需指定完整的交叉编译器名称,正确命令为:make CC=arm-poky-linux-gnueabi-gcc之前的写法会导致make调用错误程序,无法正确识别交叉编译的头文件链。
配置交叉工具链的sysroot路径
errno.h属于目标架构的系统头文件,交叉编译时需让编译器指向对应sysroot目录:- 在configure阶段添加
--with-sysroot参数,示例:
其中./configure --target=arm-poky-linux-gnueabi --host=arm-poky-linux-gnueabi --with-sysroot=$(arm-poky-linux-gnueabi-gcc -print-sysroot)$(arm-poky-linux-gnueabi-gcc -print-sysroot)可自动获取工具链的sysroot路径。 - 或在make时通过CFLAGS指定:
make CC=arm-poky-linux-gnueabi-gcc CFLAGS="--sysroot=$(arm-poky-linux-gnueabi-gcc -print-sysroot)"
- 在configure阶段添加
检查交叉工具链完整性
确认arm-poky-linux-gnueabi工具链是否完整安装,查看sysroot目录下的usr/include/errno.h是否存在。若缺失,需重新安装完整的交叉编译工具链包。放弃手动添加-I参数的错误方式
手动用-I指定单个头文件目录无法覆盖交叉编译所需的完整系统头文件结构,依赖sysroot配置才能彻底解决头文件查找问题。
内容的提问来源于stack exchange,提问作者xiaobai li
相关产品推荐
相关产品推荐

