如何让 cc 查看头文件的 /usr/local/include
How to make cc look into /usr/local/include for header files
我在安装一些依赖于它们自己的 C 库的 python 模块时遇到了这个问题。问题是,cc
根本没有在 /usr/local/include
中查找头文件。我通过添加 /usr/local/include
作为外部包含目录之一使其适用于其中一个(认为这是模块的问题)。
然后,为了测试,我写了一个简单的 hello.c
文件并添加了 #include "fftw3.h"
/ #include <fftw3.h>
如果我没有明确添加 -I/usr/local/include
编译失败.
我在 ~/.bash_profile
中添加了一行以将包含目录路径导出到 $PATH
;也没用。
所以,我的问题是,如何让 cc
在 /usr/local/include
(或者,就此而言,在任何自定义目录)中查找头文件而不传递 -I
旗帜?
仅供参考:我正在使用 macbook pro 运行 OSX 10.11
如果您使用的是 GCC,那么您可以使用三个环境变量:
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
看看here.
编辑:既然你指定你正在使用 OS X(因此 Clang),它们也应该被支持,看看最后的广告 here。让 Clang 模仿 GCC 规范只是为了提高兼容性的情况并不少见。
我认为您应该花一些时间来了解构建系统。例如 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。
我在安装一些依赖于它们自己的 C 库的 python 模块时遇到了这个问题。问题是,cc
根本没有在 /usr/local/include
中查找头文件。我通过添加 /usr/local/include
作为外部包含目录之一使其适用于其中一个(认为这是模块的问题)。
然后,为了测试,我写了一个简单的 hello.c
文件并添加了 #include "fftw3.h"
/ #include <fftw3.h>
如果我没有明确添加 -I/usr/local/include
编译失败.
我在 ~/.bash_profile
中添加了一行以将包含目录路径导出到 $PATH
;也没用。
所以,我的问题是,如何让 cc
在 /usr/local/include
(或者,就此而言,在任何自定义目录)中查找头文件而不传递 -I
旗帜?
仅供参考:我正在使用 macbook pro 运行 OSX 10.11
如果您使用的是 GCC,那么您可以使用三个环境变量:
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
看看here.
编辑:既然你指定你正在使用 OS X(因此 Clang),它们也应该被支持,看看最后的广告 here。让 Clang 模仿 GCC 规范只是为了提高兼容性的情况并不少见。
我认为您应该花一些时间来了解构建系统。例如 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。