Eclipse CDT,如何使它不搜索系统头?

时间:2016-05-18 15:00:34

标签: include eclipse-cdt eclipse-luna

我正在使用Eclipse Luna在Ubuntu 16.04上将在Linux上编译的C项目移植到arm平台

当我在Makefile中从CC = gcc切换到CC = arm-none-eabi时,我得到了很多丢失的标题,这没关系,这就是移植工作的内容。

让我感到困扰的是,当我按住CTRL键点击符号时Eclipse不会打开arm工具链的相应文件。例如,如果我按住CTRL键点击<time.h>它就不会打开:

/media/BUILDS/arm_gcc493/arm-none-eabi/include/time.h

但它总是恢复到它的linux系统对应物,在这种情况下

/usr/include/i386-linux-gnu/time.h

因为那是 gcc 所寻找的地方,但我正在用arm-none-eabi-gcc进行编译!

我不希望Eclipse这样做,因为调试变得非常混乱。如果我的头文件/源代码有问题我实际上正在尝试编译,我希望Eclipse打开我的文件,而不是默认的系统文件。我摆弄了Project Properties和Eclipse Preferences,但没有运气。

更糟糕的是,每当<sys/socket.h>被包含在内我都会收到错误,因为arm工具链没有socket.h但是如果我按住它CTRL就会把我带到/usr/include/i386-linux-gnu/sys/socket.h

我不想要,如果编译所需的标题不存在,那就不存在了。我不希望Eclipse向我展示其他内容,我该怎么做?

项目已创建导入C / C ++

下的工作空间“现有代码为Makefile项目”

非常感谢

编辑:

我做了正确的事情并从头开始为Cross ARM GCC工具链创建一个项目(使用适当的插件)。我的错误是创建了一个“Linux GCC”项目并假装Eclipse只是通过启动一个不同的“make”命令来理解我想要实现的目标。但是,如果您无法从头开始重新启动,则接受的解决方案会指导您如何手动修复该情况。

1 个答案:

答案 0 :(得分:3)

要解决此问题,您需要更新预处理器包含路径,宏等设置以使用自定义前缀GCC。

进行更改:

  1. 打开项目属性(右键单击项目并选择属性
  2. C / C ++一般 - &gt; 预处理器包含路径,宏等,选择提供商选项卡
  3. 选择 CDT GCC内置编译器设置
  4. 取消选中使用项目之间共享的全局提供商
  5. ${COMMAND}替换为arm-none-eabi-gccarm-none-eabi-g++
  6. 或者,您也可以在工作区级别编辑相同的设置,以影响工作区中的所有项目。转到窗口 - &gt; 偏好设置 - &gt; C / C ++ - &gt; 构建 - &gt; 设置 - &gt;而是发现标签。

    以下是一些可能有用的截图。

    在:

    before

    项目属性:

    project properties

    后:

    after