0

我正在尝试构建一个依赖于 Apache httpd 的项目。不幸的是,我已经并且需要将 httpd 源放在 /usr/includes 中,而该项目在$(project)/common/includes. 我希望 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

4

1 回答 1

0

这里关于gcc 的信息包括搜索路径

GCC 在几个不同的地方寻找标题。在一个普通的 Unix 系统上,如果你没有另外指示它,它会寻找用 #include 请求的头文件:

 /usr/local/include
 libdir/gcc/target/version/include
 /usr/target/include
 /usr/include

您可以使用 -Idir 命令行选项添加到此列表。在默认目录之前,按从左到右的顺序搜索所有由 -I 命名的目录

于 2012-10-03T12:24:24.843 回答