2010-06-29 13 views
1

나는 메이크 파일을 쓰는 데 어려움을 겪고 있습니다. 나는 extern 변수를 사용하면서 경험을 쌓았습니다. makefile을 사용하지 않고 프로젝트를 빌드 할 때 오류가 전혀없고 프로그램을 실행할 수 있습니다. 그러나 프로젝트를 빌드하기 위해 메이크 파일을 작성한 시점부터 undefined reference to 오류가 발생합니다.링크 시간 "정의되지 않은 참조"오류

나는 나와 파일이 3 개 이상 있지만 간단하게하기 위해 여기서는 설치를 설명하기 위해 3 개의 파일을 사용합니다. 내가 file1.c에서와 인 file2.c를 가리키는 연결 시간 동안 undefined reference to 오류를 얻을 메이크 파일을 사용하면

/************Project********/ 
/* main.c */ 
int x; 
main() 
{ 
... 

} 

/* File1.c*/ 
extern int x; 
fn1() 
{ 
... 
} 

/* File2.c*/ 
extern int x; 
fn2() 
{ 
... 
} 
/*******************************/ 

?

내가 makefile을 사용할 때 (makefile이 사용되지 않은 경우) 일식이 스스로 고치는 실수를하고 있습니까?

내 최종 메이크 파일은 다음과 같습니다 -

OBJ1 = 알고리즘/main.o를 알고리즘/File1.o 알고리즘/file2.o의 당신의 메이크에 차이가있다

all: final 

final: main.o algorithm/File1.o algorithm/File2.o 
@echo "Linking - making Final" 
$(CC) -o [email protected] $(OBJ1) 
+0

Makefile에서 "최종"규칙은 main.o에 종속되지만 algorithm/main.o와 연결됩니다. 그게 의도적 인거야? – bjg

답변

2

. 사용자의 final 대상은 main.o에 따라 다르지만 algorithm/main.o을 포함하는 $(OBJ1)을 링커에 제공합니다.

+0

예, 완전히 놓쳤습니다. 지금 나는 지을 수있다. 내 머리가 어렴풋이되어 문제가있는 곳을 찾지 못했습니다. 고마워. – HaggarTheHorrible