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

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

【问题讨论】:

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

标签: linux


【解决方案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://stackoverflow.com/a/558819/1408096

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

    荣誉:jcrossley3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2021-12-10
      • 2015-04-27
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多