我在linux中开发了小型c应用程序。对于这个应用程序,我将.h文件放入 linux标准路径(/ usr / include)。我再次编译同一个程序
输出: FATA错误:找不到xyz.h(我自己的头文件)
我是否需要更新gcc中的任何变量或解决此问题的方法
谢谢
答案 0 :(得分:6)
将头文件放在与.c
文件相同的目录中,并在编译时使用-I.
gcc -I. main.c -o myprog
您不应将头文件放在/usr/include
中,而是用于系统标题。
注意:您实际上并不需要-I.
,因为默认情况下会搜索当前目录,但是添加它并没有什么坏处。
答案 1 :(得分:0)
include指令指定的文件应位于编译器的一个搜索路径中,在许多情况下使用-I选项指定(至少对于gcc,对于其他编译器是否相同?)。搜索路径按命令行中的定义顺序进行验证。
有两种include指令:
#include "xyz.h"
)#include <xyz.h>
) IIRC,前者的默认和第一个搜索路径是工作目录。对于后者,它依赖于编译器,但通常是/usr/include/
。
根据您使用的include指令,您应该为文件选择正确的位置。或者更好,将您的文件放在一个好位置(比如包含文件的位置),并为您的gcc命令添加一个搜索路径。
答案 2 :(得分:-1)
您应该将标头.h
文件与系统和存储库构建的标头分开,这样就不会破坏任何内容。
我建议您在主目录中创建一个名为include的文件夹,然后将其添加到您的路径中,这样您再也不必担心它而不需要-I/
标记