0
.c 파일의 시작 부분에 여러 개의 .h 파일이 있습니다.gcc에서 컴파일하는 동안 오브젝트 파일에 오류가 발생했습니다.
gcc -Wall -c parserv9-3.c
에 오류 또는 경고가 없습니다 :
나는 -c 플래그를 사용하여 .c 파일을 컴파일합니다.
그러나 -c 플래그를 제거하면 임시 오브젝트 파일에 오류가 발생합니다.
즉, 내가 실행할 때 다음과 같은 오류 얻을
gcc -Wall parserv9-3.c
:
/tmp/cc5IWBiC.o: In function `parseInputSourceCode':
parserv9-3.c:(.text+0x204b): undefined reference to `getStream'
collect2: error: ld returned 1 exit status
문제가 무엇입니까? 어떤 도움이라도 대단히 감사하겠습니다.
예,'getStream' 함수는 다른 .c 파일에 있지만 현재 .c 파일에 포함 된 .h 파일 중 하나에서 선언됩니다. 그래서이 코드에 전체 코드를 복사하지 않고 같은 기능을 어떻게 사용합니까? – user42933
** 링크 ** - 모든 개체를 연결해야합니다. 컴파일러는 실제 구현이 어디에 있는지 신경 쓰지 않지만 링커는 신경 쓰지 않습니다. "gcc file1.c file2.c -o exec"를 수행하면 file2에서 file1로 구현 된 함수를 호출 할 수 있으며 링크됩니다. 그러나 당신은 그들을 함께 연결해야합니다 ** **. 그렇지 않으면 컴파일 할 수 있고 o/so/a/lib/dll/무엇이든 만들 수 있지만 결국 실제 구현과 링크되어야합니다. – littleadv
감사합니다. – user42933