문제상황:
실무에서 사용될 수 있는 C언어 코드를 작성 중 다음과 같은 에러가 발생했습니다. 아래 코드에서 에러가 발생한 부분과 에러 로그를 확인해봅시다.
main.c
#include <stdio.h>
#include "helper.h"
int main() {
int x = 5, y = 10;
int result = add(x, y);
printf("결과: %d\n", result);
return 0;
}
helper.h
#ifndef HELPER_H
#define HELPER_H
int add(int a, int b);
#endif
에러로그 내용:
/tmp/ccvE6lJr.o: In function 'main':
main.c:(.text+0x14): undefined reference to 'add'
collect2: error: ld returned 1 exit status
해결방법:
에러가 수정된 코드와 수정된 부분에 대한 주석을 확인해봅시다.
helper.c
#include "helper.h"
int add(int a, int b) {
return a + b;
}
원인분석:
에러 발생 원인은 "undefined reference to 'add'"로, 'add' 함수에 대한 정의가 누락되어 발생한 링크 에러입니다. 이 에러는 컴파일 과정에서 발생하지 않고, 링크 과정에서 발생합니다. 링크 에러는 두 개 이상의 소스 파일이나 오브젝트 파일이 서로 참조할 때, 참조하는 심볼에 대한 정의가 누락되었을 때 발생합니다.
이 문제를 해결하려면, 먼저 'helper.h'에 선언된 'add' 함수를 정의하는 'helper.c' 파일을 작성해야 합니다. 그리고 컴파일 및 링크 과정에서 'helper.c' 파일을 포함시켜야 합니다.
참고링크:
728x90