即使搜索目录正确,GCC也无法找到标题

时间:2010-06-24 15:32:45

标签: c gcc include

再一次,海湾合作委员会让我觉得自己像个笨蛋一样,对最简单的事情有困难。我已经加了一个标题:

#include "PDL.h"

然后,我尝试编译:

arm-none-linux-gnueabi-gcc -I/cygdrive/c/PalmPDK/include -I../lua-5.1.4/lua-webos/include -O2 -Wall -shared -nostdlib -mcpu=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -lpdl

但它说:

  

PDL.h:没有这样的文件或目录

我可以更改为上面指定的include目录,看看PDL.h在那里,但是GCC看不到它。

4 个答案:

答案 0 :(得分:4)

/ cygdrive是cygwin特有的,所以如果没有编译gcc来使用cygwin unix仿真层,它就不会搜索它。尝试使用-IC:/PalmPDK/include

答案 1 :(得分:0)

#include "file.h"语法在当前目录中查找,然后在头文件的默认包含目录中查找。而是使用#include <file.h>语法来获取命令行中指定的目录。

如果要使用quoted-filename语法,请使用-iquoteFOLDER_PATHpoint to your include directory on the command-line的语法。

编辑:鉴于您对makefile的评论,请确保您已在makefile中设置(和exportSHELL变量。在Windows下运行Cygwin时,可以将其设置为cmd.exe或Cygwin bash(如果包含每个的完整路径,则效果最佳)。您在SHELL变量中列出的任何环境都将用于执行makefile中的命令。您可以使用任何您想要的shell,只需确保指定其中一个,这样您就可以确定您使用的是给定shell的正确路径样式。为了更好地衡量,还要使用相同的值设置(和exportMAKESHELL变量。

答案 2 :(得分:0)

如果路径中有空格,则需要使用双引号将其转义或包围路径。

答案 3 :(得分:0)

假设您使用的是Linux机器或某种Unix:

ls -l /
ls -l /cygdrive
ls -l /cygdrive/c
ls -l /cygdrive/c/PalmPDK
ls -l /cygdrive/c/PalmPDK/include

您可能会在上面列出的其中一个命令的结果中找到答案。