如何让cc查看头文件的/ usr / local / include

时间:2015-10-12 17:50:59

标签: c compiler-errors header

我在安装一些python模块时遇到了这个问题,这些模块依赖于它们自己的C库。问题是,cc根本没有查看/usr/local/include的头文件。我通过添加/usr/local/include作为外部包含目录之一,使其适用于其中一个(认为这是模块的问题)。

然后,为了测试,我编写了一个简单的hello.c文件并添加了#include "fftw3.h" / #include <fftw3.h>,如果我没有明确添加-I/usr/local/include,则无法编译。< / p>

我在~/.bash_profile中添加了一行,以便将目录路径包含到$PATH;也没用。

所以,我的问题是,如何让cc/usr/local/include(或者,就此而言,在任何自定义目录中)中查找头文件总是不传递-I标志?

仅供参考:我正在使用运行OSX 10.11的macbook pro

2 个答案:

答案 0 :(得分:2)

如果您正在使用GCC,那么您可以使用三个环境变量:

  • CPATH
  • C_INCLUDE_PATH
  • CPLUS_INCLUDE_PATH

看看here

编辑:既然你指定了你正在使用OS X(因此是Clang),那么它们也应该得到支持,看看结尾here。让Clang模仿GCC规范只是为了帮助兼容性并不罕见。

答案 1 :(得分:0)

我认为你应该投入一些时间来理解构建系统。例如gnu make。在这里,看看这个:

CC = gcc
CFLAGS = -Wall
DEPS = primes.h
OBJ = go.o primes.o

%.o: %.c $(DEPS)
        $(CC) $(CFLAGS) -c -o $@ $<

go: $(OBJ)
        gcc $(CFLAGS) -o $@ $^

这会给你:

  • 添加所需编译器的自由。在你的情况下,这将是cc,在这个例子中它是gcc。
  • 使用cflags控制调整编译器 - 在示例中-Wall将打开警告
  • 使您的构建工作可重现
  • 在您的应用程序增长时准备具有复杂规则的配方以进行编译

有更多信息here