gpt4 book ai didi

c - 如何让 Eclipse CDT 使用正确的 Linux header 并停止抛出语义错误?

转载 作者:行者123 更新时间:2023-11-30 15:10:24 25 4
gpt4 key购买 nike

围绕这个主题有很多不同的答案,但我认为我的问题可能更具体一些,因为没有一个有效。

我正在使用 Eclipse (v3.8.1) 为嵌入式目标构建 C 应用程序。我使用 LTIB 构建目标镜像,并且我已经能够确认 LTIB(针对 Freescale i.MX 处理器)提供的 GCC 工具链是健全的 - 我可以成功构建“Hello World”应用程序并将其部署到目标.

现在我正在尝试在 Eclipse 中包含目标的一些 Linux header 。因此,我在 Eclipse 中向 ${LTIB_LOC} =/home/user/ltib 添加了一个 VAR,并在看似可以想象的任何地方添加了包含文件目录(在其他答案的帮助下) .

${LTIB_LOC}/rpm/BUILD/linux-2.6.31/include

在源代码中,我添加了我需要的 header :

#include <linux/types.h>
#include <linux/imx_types.h>

现在,问题有两个。首先,公共(public)头文件 types.h 是从内置主机目录 (/usr/include/linux) 中获取的,而我想使用这些文件在 LTIB 目录中。其次,Eclipse 发现扫描程序无法找到自定义 i.MX header imx_types.h,因此即使编译器可以找到 header 并构建项目,我仍会出现持续的语义警告/错误。

如何摆脱内置主机目录,以便始终使用目标 Linux header ,以及如何摆脱令人难以置信的烦人语义错误?

最佳答案

您需要配置内置编译器设置提供程序才能找到正确的工具链。

转到项目属性| C/C++ 通用 |提供者。选择[您的工具链]内置编译器设置,然后在获取编译器规范的命令中,将${COMMAND}替换为你的交叉编译器。

这应该让 CDT 停止获取系统默认工具链的内置包含,并开始获取交叉编译器工具链的内置包含。

(是的,用显式路径替换 ${COMMAND} 是很老套的做法。至少在设计此的开发人员看来,执行此操作的正确方法是这样的系统,就是让交叉编译器的开发人员分发一个 Eclipse 插件,该插件定义其自己的 [Cross Compiler Name] 内置编译器设置 提供程序,该提供程序知道编译器可执行文件的位置是(即 ${COMMAND} 是正确的开始),并使用它而不是默认的内置设置提供程序。我假设您手边没有这样的 Eclipse 插件。 )

关于c - 如何让 Eclipse CDT 使用正确的 Linux header 并停止抛出语义错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com