문제

SDCC (Small Device C Compiler)는 링크 단계에서 정의되지 않은 참조 오류가있는 경우에도 IHX (Intel Hex) 파일을 생성합니다. 이 문제는 ihx 파일을 만들어서 만들기 위해 ihx 파일을 설정하면 링크에서 이전 시도가 실패했음을 알 수 없으므로 makefile에서 SDCC를 사용할 때 문제가 발생합니다.

은 연결 중에 정의되지 않은 참조가있을 때 SDCC를 SDCC에 IHX 출력을 억제 할 수있는 방법이 있습니까? 그렇지 않다면, 가장 좋은 해결 방법은 무엇입니까? (나는 이미 하나를 생각했다).

또한 SDCC 가이 방식으로 설계된 이유는 무엇입니까?

여기 문제의 예가 있습니다 :

정의되지 않은 함수를 호출하는 test.c라는 파일이 있습니다.

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

test.c에서 test.ihx를 구축하기위한 간단한 makefile이 있습니다.

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 (예 : makefile)의 종속성이 아닌 무언가를 변경하고 다시 컴파일하려고 시도하는 것을 변경하여 문제를 해결하려고합니다.

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

그러나 SDCC가 이미 ihx 파일을 작성했기 때문에 작성하지 마십시오.

도움이 되었습니까?

해결책

SDCC에 대해서는 아무 것도 모릅니다. 따라서 출력을 억제 할 수 있는지 여부에 대해 질문에 답변 할 수 없거나 SDCC가 그런 식으로 설계되었는지에 대해 답변해서 죄송합니다.

작업을 수행 할 수 있습니다. 성공적인 빌드 후에 ihx 파일의 이름을 바꾸고 새 이름을 대상으로 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top