更新linux中的包含路径
Posted
技术标签:
【中文标题】更新linux中的包含路径【英文标题】:Update include path in linux 【发布时间】:2012-07-16 05:33:56 【问题描述】:/my/path/to/file 文件夹中的头文件很少。我知道如何将这些文件包含在新的 C 程序中,但每次我需要在包含头文件之前键入头文件的完整路径。我可以在linux中设置一些路径变量,让它自动查找头文件吗?
【问题讨论】:
您可以将路径添加到您的makefile 吗?如果您使用的是 你使用 gcc 吗?你是直接使用还是使用makefile? 如果直接使用gcc
(这通常是个坏主意;最好使用make
或omake
或一些脚本之类的构建器),只需将其传递给适当的-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中的包含路径的主要内容,如果未能解决你的问题,请参考以下文章