我正在尝试构建一个依赖于Apache httpd的项目。不幸的是,我已经并且需要httpd源在/ usr / includes中,而项目在$(project)/common/includes
中为httpd(不同版本!)提供了自己的头文件。我希望gcc从项目目录而不是/ usr / includes中获取标题,但我担心即使我成功使用它,我也可能会错过/ usr / includes中的其他重要标题。 / p>
关于如何做到这一点的任何想法?
编辑:Make文件的相关部分如下所示:
CFLAGS = -Wall -O3 -fPIC -fomit-frame-pointer -I vm -D_GNU_SOURCE -I libs/common -D_64BITS
EXTFLAGS = -pthread
MAKESO = $(CC) -shared #-WBsymbolic
# later ...
all: createbin libneko neko std compiler libs
neko: bin/neko
# later ...
bin/neko: $(VM_OBJECTS)
${CC} ${CFLAGS} ${EXTFLAGS} -o $@ ${VM_OBJECTS} ${NEKOVM_FLAGS}
strip bin/neko
在执行这个“食谱”的某个地方,我得到了:
In file included from /usr/include/httpd/httpd.h:43:0,
from mod_neko.h:20,
from mod_neko.c:17:
/usr/include/httpd/ap_config.h:25:17: fatal error: apr.h: No such file or directory
但它不应该使用/usr/include/httpd/httpd.h,因为它有<project> /libs/include/apache2/httpd.h
答案 0 :(得分:0)
GCC在几个不同的地方寻找标题。在普通的Unix系统上,如果你不指示它,它将在#include中查找请求的头文件:
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
您可以使用-Idir命令行选项添加到此列表。 -I命名的所有目录按从左到右的顺序在默认目录之前搜索。