C++ 关于gcc路径搜索-I';我无法在当前目录中导入文件

C++ 关于gcc路径搜索-I';我无法在当前目录中导入文件,c++,gcc,path,g++,C++,Gcc,Path,G++,我是一个从python到cpp的人。我几乎没有任何使用gcc编译器的经验 我的问题是 如果我在somedir下有foo.h。用g++/gcc编译bar.cpp无法找到foo.h,除非我包含绝对路径 一些元数据 os : ubuntu 20.04 LTS gcc version : gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 (注意:我尝试了gcc-B.bar.cpp,但不起作用)如果*.h文件与*.cpp文件位于同一目录中,则gcc将在该目录中自动找到该文

我是一个从python到cpp的人。我几乎没有任何使用
gcc
编译器的经验

我的问题是

如果我在
somedir
下有
foo.h
。用g++/gcc编译
bar.cpp
无法找到
foo.h
,除非我包含绝对路径

一些元数据

os : ubuntu 20.04 LTS
gcc version : gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

(注意:我尝试了
gcc-B.bar.cpp
,但不起作用)

如果
*.h
文件与
*.cpp
文件位于同一目录中,则
gcc
将在该目录中自动找到该文件,以便您可以使用此命令

gcc bar.cpp

如果
*.h
文件与
*.cpp
文件位于不同的目录中,则需要向
gcc
提供头文件所在位置的更多信息,因此需要提供
-I
选项的绝对路径

gcc -I somedir/foo.h bar.cpp

请注意,在这两种情况下,您只需编写
#include“foo.h”
,代码就能正常工作。在第一种情况下,
gcc
将能够找到该文件,因为它位于当前工作目录中。在第二种情况下,
gcc
将能够找到该文件,因为它被赋予了该文件所在目录的绝对路径。你只需要在 >代码中包含文件的名称,包括<代码> >不是因为代码< > GCC < /C>已经知道路径。

你读过文档吗?因为我不熟悉这些东西,我发现很难确切地指出我需要什么。有一件事你需要知道的是C和C++是不同的语言。使用C编译器(如
gcc
)编译C源代码。用C++编译器编译C++源程序,如代码> G++< /COD>。知道你在用哪种语言写,因为这很重要。至于实际问题,如果你给出一个答案,包括源代码和头文件,它们在文件系统上的相对布局的细节,以及你用来编译的命令,就更容易得出答案。一般来说,不要使用
gcc
的选项
-x
。这样做是很不寻常的,而且会让人困惑。也许你也是。GCC系统为其支持的每种语言都有一个特定于语言的前端,C语言除外,
GCC
(不含
-x
)为其服务。这些是通常使用的。