ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Linux 中为 GCC 添加默认包含路径?

除了通常的包含目录之外,我还希望 gcc 包含来自 $HOME/include 的文件,但似乎没有 $LD_LIBRARY_PATH 的类似物。

我知道我可以在编译时(或在 makefile 中)在命令行中添加包含目录,但我真的很喜欢这里的通用方法,就像在库案例中一样。

这是 GCC 4.8.1 手册的链接,其中记录了 C_INCLUDE_PATH and CPLUS_INCLUDE_PATH 环境变量。

r
rtx13

尝试设置 C_INCLUDE_PATH(用于 C 头文件)或 CPLUS_INCLUDE_PATH(用于 C++ 头文件)。

正如 Ciro 提到的,CPATH 将为 C 和 C++(以及任何其他语言)设置路径。

GCC's documentation 中有更多详细信息。


b
bstpierre

使用您最喜欢的包含为 gcc 创建一个别名。

alias mygcc='gcc -I /whatever/'

我认为 -I 之后应该没有空格
省略空格只是一个习惯问题,就像您输入 -l<libnam> 进行链接一样 请注意,创建别名是一个非常糟糕的解决方案,实际上您会构建一个“最喜欢的包含”列表并将它们添加到您的生成文件。
“将库作为单独参数的第二种选择仅用于 POSIX 合规性,不推荐使用。”,根据 GCC 手册。
不是一个好主意。这是不可组合的(如果您想要另一个目录怎么办?如果您想要其他一些 GCC 开关怎么办)并且可能会混淆各种脚本或对 gcc 做出假设的自动化工具。
L
Lakhwinder Singh

请注意:CPLUS_INCLUDE_PATHC_INCLUDE_PATH 不等同于 LD_LIBRARY_PATHLD_LIBRARY_PATHld(运行时的动态链接器)提供服务,而为 C/C++ 编译器提供库位置的前两者的等价物是 LIBRARY_PATH


0
0xC0000022L

gcc 规范文件可以完成这项工作,但是机器上的所有用户都会受到影响。

请参阅HOWTO Use the GCC specs file


链接已失效。如果您可以使用实际信息更新此答案,那就太好了。