코딩을 완료하고 컴파일을 하려는데 “undefined reference to” 오류가 발생하는 경우가 있습니다.

 

/home/test/ServerComm.cpp:133: undefined reference to `ServerComm::BatchStatistics(char*, char*)'
/home/test/ServerComm.cpp:137: undefined reference to `ServerComm::~BatchStatistics()'
...
collect2: error: ld returned 1 exit status
make: *** [ServerComm.exe] 오류 1

 

이런경우 두가지만 찾아보면 쉽게 오류 해결이 가능 합니다.

 

1. Header 파일에 추가 확인

 

프로그램에 집중해서 작업을 하다 보면 function이 필요해서 추가를 하는데 막상 헤더파일에는 빼놓고 컴파일 하는 경우가 있습니다. 그런 경우에는 여기에서는 BatchStatistics.h 헤더 파일을 열고 빠진 내용을 추가하면 됩니다.

 

class BatchStatistics {
public:
    BatchStatistics(string userId, string month);
    ~BatchStatistics();

 

 

2. Makefile 추가 확인

 

만일 신규로 class 파일을 생성한 거라면 Makefile에 등록을 하지 않아 컴파일시 참조를 할 수 없어서 발생하는 오류 입니다.

 

.SUFFIXES: .o .cpp
%.o : %.cpp
           $(CC) $(CFLAGS) -c $< $(INC)
 
all: ServerComm.exe
SRV_OBJ=Main.o \
           CommServer.o \
           PostgreClass.o \
           BatchStatistics.o \
           User.o          

  

이렇게 Makefile에 추가하고 다시 make rebuild 해주면 undefined reference to 오류는 해결이 됩니다.

 

- copy coding -


+ Recent posts