更新linux中的包含路径

Posted

技术标签:

【中文标题】更新linux中的包含路径【英文标题】:Update include path in linux 【发布时间】:2012-07-16 05:33:56 【问题描述】:

/my/path/to/file 文件夹中的头文件很少。我知道如何将这些文件包含在新的 C 程序中,但每次我需要在包含头文件之前键入头文件的完整路径。我可以在linux中设置一些路径变量,让它自动查找头文件吗?

【问题讨论】:

您可以将路径添加到您的makefile 吗?如果您使用的是 你使用 gcc 吗?你是直接使用还是使用makefile? 如果直接使用gcc(这通常是个坏主意;最好使用makeomake或一些脚本之类的构建器),只需将其传递给适当的-I your/include/dir 标志。不要忘记将-Wall 传递给gcc 【参考方案1】:

你可以创建一个makefile。一个最小的例子是:

INC_PATH=/my/path/to/file
CFLAGS=-I$(INC_PATH)

all:
    gcc $(CFLAGS) -o prog src1.c src2.c

从这里您可以通过多种方式改进此 makefile。最重要的可能是声明编译依赖项(因此只重新编译修改过的文件)。

作为参考,这里有一个GNU make documentation 的链接。

如果你不想使用makefile,你总是可以设置一个环境变量,以便更容易键入编译命令:

export MY_INC_PATH=/my/path/to/file

然后你可以像这样编译你的程序:

gcc -I$MY_INC_PATH -o prog src1.c src2.c ...

您可能想在文件.bashrc 中定义MY_INC_PATH 变量,或者更好的是,在方便的地方创建一个包含变量定义的文件。然后,您可以使用 source 在当前 shell 中设置该变量:

source env.sh

不过,我认为使用 makefile 是一种更可取的方法。

【讨论】:

谢谢,但有没有不写makefile的方法? @username_4567 我只是在更新我的问题以包含替代解决方案。但在我看来,编写一个 5 行的 makefile 似乎是一个简单且更好的解决方案。 谢谢,实际上我认为有一个默认路径可以查找所有头文件.. @username_4567 有一些默认路径(例如 /usr/include)。选项 -I-L 允许您使用自定义包含和库路径。当然,你不想一直输入长路径,所以你需要一些像我提到的那样的解决方案:)【参考方案2】:

我现在不在 Linux 中,我懒得重新启动以检查一切是否正确,但是您是否尝试过创建符号链接?例如,如果您使用的是 Ubuntu:

$ cd /usr/include
$ sudo ln -s /my/path/to/file mystuff

那么当你想包含 stuf 时,你可以使用:

#include <mystuff/SpamFlavours.h>

【讨论】:

【参考方案3】:

有一个类似的问题,可能会更好地解决(如果您对永久解决方案感兴趣):https://***.com/a/558819/1408096

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

荣誉:jcrossley3

【讨论】:

以上是关于更新linux中的包含路径的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令之获取路径中的目录dirname

vs2010 相对路径中附加包含目录 不好用,请帮忙看看

在linux中,把指定路径下(包含子目录)中含.sh结尾的文件及目录查找出来,输入到指定文件中,的脚本。

097_linux如何配置jdk路径

linux 文件路径截取 basename,dirname

[Linux] 更新PATH环境变量或默认执行文件搜索路径