【问题标题】:How To Include Files From Multiple Directories In C on Linux?如何在 Linux 上的 C 中包含来自多个目录的文件?
【发布时间】:2013-03-22 12:12:46
【问题描述】:
       gcc main.c -o main -I include 

我正在创建一个具有以下目录结构的小型 c 应用程序:

应用程序=>

  • =>src(一个目录,包含所有源文件)
  • =>include(一个目录,包含所有头文件)
  • =>common(包含所有常用文件的目录)
  • =>main.c

现在我正在尝试运行 main.c,其中包含 #include 指令以包含 include 目录中的头文件和对 的函数调用commonsrc 目录中的 em>.c 文件。我正在使用 -I 选项,但它仅对一个目录路径指示有用。 编译器将如何查看所有 srccommoninclude 目录来解析调用。 请建议我一个命令或 make 文件,以便在使用 gcc 编译时提供多个目录的路径。

【问题讨论】:

  • 查看this 可能会有所帮助
  • 您是否包含 .c 文件?
  • 您的语法不清楚。 common/ 中有什么内容?
  • 天哪!我希望他们写编译器手册...不是吗?

标签: c makefile gnu-make


【解决方案1】:

允许多个-I 选项。来自Options for Directory Search -I 选项的描述指出:

将目录dir添加到要搜索头文件的目录列表的头部。这可以用来覆盖系统头文件,替换您自己的版本,因为这些目录是在系统头文件目录之前搜索的。但是,您不应使用此选项来添加包含供应商提供的系统头文件的目录(为此使用 -isystem)。 如果您使用多个 -I 选项,则目录按从左到右的顺序扫描;标准系统目录紧随其后。

例如:

gcc main.c -o main -Iinclude -Isrc/include -Icommon/include

请注意,如果main.c 正在使用在另一个.c 文件中实现的函数,那么其他.c 文件也需要编译并链接到最终程序二进制文件中。例如:

gcc main.c src/another.c -o main -Iinclude -Isrc/include -Icommon/include

【讨论】:

    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 2020-08-16
    • 2013-05-03
    • 2014-03-17
    • 1970-01-01
    • 2013-09-22
    • 2014-09-17
    • 2011-09-05
    相关资源
    最近更新 更多