2010-03-02 3 views
3

내가 아래이 메이크 파일이 있고 그 안에 내 포함되어C 코드 컴파일 실패

GTK/이것은 gtk.h

웹킷/webkit.h

하지만 난하려고 할 때 make 명령을 사용하여 프로젝트를 빌드 나는 오류

오류가 : GTK/이것은 gtk.h : 해당 파일이나 디렉토리

오류 : 웹킷/webkit.h :

: 경우 해당 파일이나 디렉토리

은 gtk + -2.0.pc 및 웹킷 ... PC는 USR/lib 디렉토리/pkgconfig

만들기 파일에

CC=gcc 
CFLAGS=-g -Wall `pkg-config --cflags gtk+-2.0 webkit-1.0` 
LDFLAGS+=`pkg-config --libs gtk+-2.0 webkit-1.0` 
INCLUDE=/usr/include 
LIB=/usr/lib 
SOURCES=wrapper.c wrapper.h browser.c 
OBJ=browser 

all: $(SOURCES) $(OBJ) 

$(OBJ): $(SOURCES) 
$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCLUDE) -L $(LIB) $(SOURCES) -o $(OBJ) 

clean: 
rm -rf $(OBJ) 
+0

make를 실행하여 실제 출력을 게시 할 수 있습니까? – jamessan

+0

'pkg-config'가 설치되어 있습니까? 쉘에서'pkg-config --cflags gtk + -2.0 webkit-1.0'의 결과는 무엇입니까? – ntd

답변

1

CFLAGS 외에 CXXFLAGS를 설정해보십시오.

+0

실제로 CXXFLAGS는 C++ 컴파일러 용입니다. 어쩌면 CPPFLAGS를 의미할까요? http://stackoverflow.com/questions/495598/difference-between-cppflags-and-cxxflags-in-gnu-make –

6

Backticks는 Makefile에서 쉘 명령을 실행하는 방법이 아닙니다. 당신이에 지정 추가 경로가없는 한

/usr/include/gtk/gtk.h 
/usr/include/webkit/webkit.h 

:

CFLAGS=-g -Wall $(shell pkg-config --cflags gtk+-2.0 webkit-1.0) 
LDFLAGS+=$(shell pkg-config --libs gtk+-2.0 webkit-1.0) 
+1

올바른 동안 명령을 실행하려면'$ (shell ...) '이 필요합니다. Makefile, backticks 사용에는 아무런 문제가 없습니다. backtick을 사용하면 make는 백틱이있는 명령 행을 쉘에 전달하고 쉘은 컴파일러를 호출하기 전에이를 처리합니다. –

+0

변경 사항이 없습니다. – user248230

+0

파일을 만들 때 오류가 없습니다. 시스템 환경에 오류가있어서 누구에게 바꿀 수 있습니까? – user248230

1

는 사용자가 지정한 경로가 /usr/include입니다 포함처럼 CFLAGS와 LDFLAGS 라인은 아마 따라서이에 rthe 파일 fo를 볼 것이다, 보일 것입니다 CPATH 또는 C_INCLUDE_PATH 환경 변수 중 하나를 선택하십시오.

usr/lib/pkgconfig을 -I 경로로 추가하십시오.

+0

'$ (CFLAGS)'는 gtk 및 webkit 헤더를 찾을 위치를 지정하는 pkg-config에서 반환되는 추가'-I' 지시문을 포함합니다. – jamessan

+0

@jamessan : 파일이 존재하고 파일이 존재했다는 것을 제외하고는 파일을 찾았을 것이므로 수동으로 추가하면 영구적 인 해결책이 아니라면 유용한 조사입니다. – Clifford

1

/usr/include 디렉토리에 실제로 gtk/gtk.h 및 webkit/webkit.h가 있습니까? 패키지를 제공하는 개발 패키지가 설치되어 있습니까?

+0

예,이 파일은 include 디렉토리에 있습니다 – user248230

+0

/usr/include/gtk/gtk.h 및 /usr/include/webkit/webkit.h가 있고 \\ ... \를 $ (shell ...)로 변경했습니다. .) 당신은 문제가 없어야한다.이 makefile은이 변경과 함께 작동한다. –