Cygwin、gcc 和 C_INCLUDE_PATH

Posted

技术标签:

【中文标题】Cygwin、gcc 和 C_INCLUDE_PATH【英文标题】:Cygwin, gcc and C_INCLUDE_PATH 【发布时间】:2016-12-03 12:29:52 【问题描述】:

首先,我是一个完整的 Cygwin/Unix/gcc 菜鸟。 (我只用过VC++)

我安装了 Cygwin 并尝试编译一些 C 程序。

需要一些头文件(我会说是 /home/MyUsername/brabrabra/include 中的“brabra.h”),所以我做了

export C_INCLUDE_PATH=/home/MyUsername/brabrabra/include

然后尝试编译通过

gcc -o program1 program1.c

但它说

brabra.h: No such file or directory

原来如此

gcc -o program1 program1.c -v

它说

#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include
 /usr/include
 /usr/lib/gcc/x86_64-pc-cygwin/5.4.0/../../../../lib/../include/w32api
End of search list.

是的,我通过“export”命令设置的包含目录似乎无法被 gcc 识别。 我能做什么?

【问题讨论】:

根据您的问题,echo $C_INCLUDE_PATH 在您完成export ... 之后会告诉您什么? 那么ls $C_INCLUDE_PATH你能得到什么? "当前版本的 Cygwin 和 GCC 不支持 $C_INCLUDE_PATH 吗?"不,不是。为此,您需要在真正的 unix/linux 系统中运行 GCC。在 Cygwin 上,按照@alk 所说的做。 【参考方案1】:

我能做什么?

您可以直接告诉编译器在哪里查找特定文件。

这可以通过使用-I 选项来完成。

gcc -I /home/MyUsername/brabrabra/include -o program1 program1.c

请注意,此选项需要源文件之前,可能需要查找-I指定的目录,因此命令至少应如下所示:

gcc -o program1 -I /home/MyUsername/brabrabra/include program1.c

顺便说一句,-L 选项的作用相同,但用于链接所需的库文件。

【讨论】:

谢谢。当前版本的 Cygwin 和 GCC 不支持 $C_INCLUDE_PATH 吗?

以上是关于Cygwin、gcc 和 C_INCLUDE_PATH的主要内容,如果未能解决你的问题,请参考以下文章

cygwin 中如何安装arm-linux-gcc交叉编译器

gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

cygwin安装GCC选择

cygwin 下执行make怎么没反应

Msys/MinGW与Cygwin/gcc

为啥 cygwin 使用 Visual Studio BuildTools 而不是 gcc?