-2

我在 linux 中开发了小型 c 应用程序。对于这个应用程序,我将 .h 文件放在 linux 标准路径 (/usr/include) 中。我再次编译相同的程序

输出:FATA ERROR : xyz.h(my own header file) not found

我是否需要更新 gcc 中的任何变量或解决此问题的方法

谢谢你

4

3 回答 3

6

将头文件和你的文件放在同一目录下,编译时.c使用-I.

gcc -I. main.c -o myprog

您不应该将头文件放在/usr/include系统头文件中。

注意:您实际上并不需要,-I.因为默认情况下会搜索当前目录,但是添加它并没有什么坏处。

于 2012-11-07T15:25:28.917 回答
0

由 include 指令指定的文件意味着位于编译器的搜索路径之一,在许多情况下使用 -I 选项指定(至少对于 gcc,其他编译器是否相同?)。搜索路径按照命令行中的定义顺序进行验证。

有两种包含指令:

  • 双引号 ( #include "xyz.h")
  • 尖括号的 ( #include <xyz.h>)

IIRC,前者的默认和第一个搜索路径是工作目录。对于后者,它依赖于编译器,但通常是/usr/include/.

根据您使用的包含指令,您应该为您的文件选择正确的位置。或者更好的是,将您的文件放在一个好的位置(比如与包含文件相同的位置),并在您的 gcc 命令中添加一个搜索路径。

于 2012-11-07T15:50:19.107 回答
-1

您应该将头.h文件与系统和存储库构建的头文件分开,这样您就不会破坏任何东西。

我建议在您的主目录中创建一个名为 include 的文件夹并将其添加到您的路径中,这样您就不必再担心它并且不需要-I/标志

于 2012-11-07T15:30:52.623 回答