【问题标题】:How do I add my own header file directory to Mac Terminal gcc?如何将我自己的头文件目录添加到 Mac Terminal gcc?
【发布时间】:2011-04-18 00:54:14
【问题描述】:

我正在尝试编译一个 C 程序 (myProgram.c),其中包含一个位于指定目录中的自定义 .h 文件。如何将目录添加到 gcc 以便我可以随时使用像 gcc myProgram 这样的命令构建 myProgram.c(没有标志,什么没有

【问题讨论】:

    标签: c macos bash shell gcc


    【解决方案1】:

    您可以通过更改 C_INCLUDE_PATH 环境变量来做到这一点,例如

    C_INCLUDE_PATH=~/include
    export C_INCLUDE_PATH
    

    您可以将其添加到您的.bashrc.bash_profile 或其他任何内容中,以始终正确设置环境变量。 Here's a reference on how you can do the same for libraries and C++.

    【讨论】:

    • 感谢@Rafe Kettler 的评论。我尝试了这个(usr/lib)作为路径,但我仍然在编译时得到“没有这样的文件或目录”......放置我的自定义头文件以便 gcc 总是知道它们的一般位置在哪里?跨度>
    • @Eric 无论你想去哪里,真的。我把我的放在~/include,但选择权在你。
    • @Eric。如果您使用“usr/lib”,您可能想尝试“/usr/lib”...但不要将头文件放在 /usr/lib 中。如果你打算这样做,你不妨把它们放在 /usr/include 中。
    【解决方案2】:

    必须使用一整套标志才能在 El Capitan 上运行:

    export DYLD_LIBRARY_PATH=/usr/local/include
    export CPPFLAGS="-I/usr/local/include/snappy-c.h"
    export CFLAGS="-I/usr/local/include/snappy-c.h"
    export CXXFLAGS="-I/usr/local/include/snappy-c.h"
    export LDFLAGS="-L/usr/local/lib"
    

    【讨论】:

      【解决方案3】:

      Makefiles 在这种情况下会很有帮助,它们简化了多个文件项目的编译。

      假设您正在使用这些相同的文件并且它们位于同一目录中

      • main.c
      • custom.c
      • custom.h

      一个示例 makefile 可能看起来像

      all: main.o custom.o
          gcc main.o custom.o -o myExecutable
      
      main.o: main.c
          gcc -c main.c
      
      custom.o: custom.c custom.h
          gcc -c custom.c
      
      clean:
          rm -f *.o myExecutable
      

      或者类似的,一般格式是

      name: dependency
          command
      

      因此,通过从命令行运行make all,您将指示编译器将您的源代码编译为目标文件,然后将这些目标文件链接到一个可执行文件中。

      Make 应该可以在任何现代系统上轻松使用。有关基本 makefile 和用法的更多信息,请参阅此简单教程:http://mrbook.org/tutorials/make/

      【讨论】:

        猜你喜欢
        • 2011-03-16
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 2012-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        相关资源
        最近更新 更多