2010-07-22 5 views
1

링크 단계에서 정의되지 않은 참조 오류가있는 경우에도 SDCC (iCal) 파일에서 ihx (Intel Hex) 파일을 생성합니다. 이 동작은 Makefile에서 SDCC를 사용할 때 ihx 파일을 make 대상으로 설정하면 make가 링크시 이전 시도가 실패했음을 알리는 좋은 방법이 없기 때문에 문제가 발생합니다.링크 단계에서 Makefile에서 SDCC를 사용할 때의 문제

연결하는 동안 정의되지 않은 참조가있을 때 SDCC에서 ihx 출력을 억제하도록하는 방법이 있습니까? 그렇지 않은 경우 가장 좋은 해결 방법은 무엇입니까? (이미 하나 생각했습니다).

또한 에 관심이 있습니다. SDCC는 누구나 알고있는 것처럼 설계되었습니다. 여기

문제의 예 : 당신은에서 test.ihx 구축을위한 간단한 Makefile을 가지고

void foo(); 
void main() 
{ 
    foo(); 
} 

:

당신은 정의되지 않은 함수를 호출 TEST.C라는 파일이 TEST.C :

test.ihx: test.c 
    sdcc test.c 

당신은 처음 TEST.C 컴파일을 시도하며 실패

C:\test>make 
sdcc test.c 

?ASlink-Warning-Undefined Global '_foo' referenced by module 'test' 
make: *** [test.ihx] Error 1 

당신은 (예 : 메이크 같은) IHX의 종속성 아닌 무언가를 변경하여 문제를 해결하고 다시 컴파일하려고 시도 :

C:\test>make 
make: `test.ihx' is up to date. 

을하지만 시도하지 않습니다 확인 SDCC가 이미 ihx 파일을 만들었 기 때문에 컴파일하십시오.

답변

1

나는 sdcc에 관해서 아무 것도 모른다. 그래서 나는 출력이 억제 될 수 있는지 또는 왜 sdcc가 그런 식으로 설계되었는지에 관해서 당신의 질문에 대답 할 수 없다는 점에 유감 스럽다.

나는 생각할 수있다 : 성공적인 빌드 후에 ihx 파일의 이름을 바꾸고, 새로운 이름을 make 타겟으로 사용한다.

+0

멋지다. 해결 방법이 내 것보다 낫다. –

관련 문제