【发布时间】:2012-10-02 23:25:46
【问题描述】:
我正在尝试构建一个依赖于 Apache httpd 的项目。不幸的是,我已经并且需要将 httpd 源放在 /usr/includes 中,而该项目在 $(project)/common/includes 中为 httpd(不同版本!)提供了自己的标头。我希望 gcc 从项目目录而不是 /usr/includes 中获取头文件,但恐怕即使我成功了,我也可能会错过 /usr/includes 中的其他重要头文件。
关于如何做到这一点的任何想法?
编辑: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
【问题讨论】:
-
CFLAGS=-I<project>/common/includes? -
(另外值得指出的是,头文件只针对编译器;链接器不使用它们。)
-
这将取决于一些事情,CFLAGS 是否在 Makefile 中被覆盖,他是否使用 Makefiles,如果它们被覆盖,它们是否尊重 shell-set CFLAGS 以及以何种顺序.. 需要更多信息可以准确指出。
-
从您的帖子中不清楚必要的标题在哪里。
标签: c gcc include-path