2012-10-02 3 views
0

저는 Apache httpd에 의존하는 프로젝트를 만들려고합니다. 불행하게도 프로젝트가 httpd (다른 버전의)에 대한 헤더를 $(project)/common/includes에 제공하는 동안 httpd 소스가/usr/includes에 있고 필요합니다. gcc가/​​usr/includes 대신에 프로젝트의 디렉토리에서 헤더를 집어 내길 바래요.하지만 성공적 일지라도/usr/include의 다른 중요한 헤더를 놓칠 것 같습니다.GCC를 잘못 찾음이 포함되었습니다.

방법에 대한 아이디어가 있으십니까? 이 "조리법"나는군요 실행하는 동안

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 [email protected] ${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

+1

'CFLAGS = -I /common/includes'? – nneonneo

+0

(헤더가 컴파일러 용으로 엄격하게 사용되며, 링커는이 헤더 파일을 사용하지 않습니다.) – nneonneo

+0

CFLAGS가 Makefile에서 대체되고 있는지 여부, Makefile을 일반적으로 사용하는지, 재정의하는지 여부에 따라 달라질 수 있습니다 , 그들은 쉘 - 세트 CFLAGS를 명예롭게하고 어떤 순서로 지시합니까? 정확하게 지적하기 위해서는 더 많은 정보가 필요합니다. – favoretti

답변

0

여기에 대한 정보 gcc includes search path

GCC는 여러 다른 위치에서 헤더를 찾습니다. 당신이 그렇지 않으면 지시하지 않으면 정상적인 유닉스 시스템에서, 그것의 사용법 #include와 요청 헤더를 찾습니다 : 당신은 -Idir 명령 줄 옵션을 사용하여이 목록에 추가 할 수 있습니다

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

. -I로 명명 된 모든 디렉토리는 기본 디렉토리 앞에 왼쪽에서 오른쪽 순서로 검색됩니다.

+0

@wvxvw CFLAGS에 -I $ (project)/common/includes를 추가해야한다고 생각합니다. ** 기본 디렉토리 ** –

+0

@wvxvw 앞에 검색됩니다. 위의 설명에 따라 -I $ (project)/libs/include/apache2가 추가되어야 함 –

+0

@wvxvw 나는 마술을 믿지 않는다. 그러나 "GCC가 -nostdinc 옵션을 사용하여 기본 디렉토리를 검색하지 못하게 할 수 있습니다"라는 링크를 읽었을 경우 –

관련 문제