gcc #include<>和#include“”,我可以编译而不会改变一个到另一个?

时间:2011-05-20 05:01:29

标签: macos gcc include makefile

我被要求重新编译一个相当古老的EMG处理库,因此它适用于现代Mac,而不是目前正在运行的古老SunOS工作站。对于那些不熟悉makefile的人来说,这是一条痛苦的道路,但是在浏览了整个互联网之后,这让我很难过。

makefile(由imake生成)使用以下参数为每个源文件调用gcc,但是失败并出现“未定义符号”错误:

gcc -I[First Include Path] -I[Second Include Path] -I. -c [File Name].c
gcc -o [Output File Name] [Include a bunch of libraries] -lm

我认为问题的根源是所有#include语句都使用<>对于系统库,包含目录中的.h,以及与正在编译的.c文件位于同一目录中的.h。我知道它错了,但就是这样。如果我将它们改为“”只用于编译.c所在目录中的.h,那么一切正常。

当然,我不想单独为数百个文件执行此操作。那么,我可以进行一些更改,以便gcc在当前目录中查找#include<&gt ;?从我收集的搜索路径上读起来,它默认不是吗?

或者我注定要继续我目前的某种黑客工作批量查找和替换的计划?

1 个答案:

答案 0 :(得分:0)

根据我的经验,#include ""也适用于系统标头。因此,如果您不关心区分本地和系统标头,则可以尝试将所有#include <>替换为#include ""