ST意法半导体
直播中

王越建

8年用户 1530经验值
私信 关注
[问答]

stm32mp135使用官方SDK交叉编译工具链,编译的时候却找不到头文件怎么解决?

定环境变量,
echo $ARCHarm
echo $CROSS_COMPILEarm-ostl-linux-gnueabi-
echo $CCarm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/jiang/STMicroelectronics/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
但是编译的时候
arm-ostl-linux-gnueabi-gcc -o main main.cmain.c:1:10: fatal error: sys/types.h: No such file or directory1 | #include |          ^~~~~compilation terminated.
然后查询资料说找默认搜索头文件路径,还有说改sysroot,
目前没有解决,有遇到类似的或知道如何解决的吗?

回帖(4)

曹雪琰

2025-3-10 09:28:05
需要
arm-ostl-linux-gnueabi-gcc --sysroot=$OECORE_TARGET_SYSROOT -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -o main main.c
这样可以成功编译,是默认没有配置好吗,怎么才能不手动输入那些路径选择呢?
举报

石飞鹏

2025-3-10 09:28:09
是用哪个指令编译的?使用$CC -o main main.c试试。
举报

潘飘稚

2025-3-10 09:28:15
选择使用eclipse进行进行程序编写。
举报

京五环以外

2025-3-11 17:41:30

在使用 STM32MP135 官方 SDK 的交叉编译工具链时,如果遇到找不到头文件的问题,通常是因为编译器无法正确找到系统头文件的路径。根据你提供的信息,你已经设置了 --sysroot 参数,但仍然出现问题。以下是一些可能的解决方案:


1. 检查 sysroot 路径


确保 --sysroot 参数指定的路径是正确的,并且该路径下确实包含所需的头文件。你可以手动检查 /home/jiang/STMicroelectronics/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi 目录下是否存在 usr/include 目录,以及该目录下是否有 sys/types.h 文件。


ls /home/jiang/STMicroelectronics/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/include/sys/types.h

如果路径不正确或文件不存在,可能需要重新安装或配置 SDK。


2. 确保环境变量正确设置


确保 ARCHCROSS_COMPILECC 环境变量正确设置。你可以通过以下命令检查:


echo $ARCH
echo $CROSS_COMPILE
echo $CC

确保 CC 变量包含了 --sysroot 参数。


3. 使用 pkg-config-I 参数


如果某些头文件不在默认的 sysroot 路径下,你可能需要手动指定头文件的路径。可以使用 -I 参数来指定额外的头文件路径。例如:


arm-ostl-linux-gnueabi-gcc -o main main.c -I/home/jiang/STMicroelectronics/Developer-Package/SDK/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi/usr/include

4. 检查 SDK 安装是否完整


有时 SDK 安装可能不完整,导致缺少某些头文件。你可以尝试重新安装 SDK,或者从官方渠道获取完整的 SDK 包。


5. 使用 stm32wrapper4dbg 工具


如果你使用的是 STM32MP1 系列的 SDK,可以尝试使用 stm32wrapper4dbg 工具来设置环境变量和路径。这个工具通常包含在 SDK 中,可以帮助你正确配置编译环境。


source /home/jiang/STMicroelectronics/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

6. 检查编译器版本


确保你使用的交叉编译工具链版本与 SDK 兼容。有时版本不匹配也会导致头文件找不到的问题。


7. 使用 strace 调试


如果问题仍然存在,可以使用 strace 来跟踪编译器的系统调用,看看它到底在哪些路径下查找头文件。


strace -f arm-ostl-linux-gnueabi-gcc -o main main.c 2>&1 | grep open

通过以上步骤,你应该能够解决头文件找不到的问题。如果问题仍然存在,建议查阅 SDK 的官方文档或联系技术支持。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分