2014-10-28 10 views
0

첫 번째 리눅스 기반 정적 라이브러리를 만들려고합니다. 이 사이트의 지시 사항을 따르고 있습니다. 첫 번째 라이브러리를 만들지 못했습니다. `main '에 대한 정의되지 않은 참조

이것은 내가 사용하고있는 메이크 인 코드

#ifndef _ADDNUMBERS_H 
#define _ADDNUMBERS_H 

class AddNumbers 
{ 
     private: 
     int _a; 
     int _b; 

     public: 
     AddNumbers(); 
     ~AddNumbers(); 

     void setA (int a); 
     void setB (int b); 

     int getA() const; 
     int getB() const; 

     int getSum() const; 

}; // AddNumbers 

#endif // _ADDNUMBERS_H 

~/workspace/C++/AddNumbers/src/AddNumbers.cpp 

#include "AddNumbers.h" 

AddNumbers::AddNumbers() 
: _a(0), _b(0) 
{ 
} 

AddNumbers::~AddNumbers() 
{ 
} 

void AddNumbers::setA (int a) 
{ 
     _a = a; 
} 

void AddNumbers::setB (int b) 
{ 
     _b = b; 
} 

int AddNumbers::getA() const 
{ 
     return _a; 
} 

int AddNumbers::getB() const 
{ 
     return _b; 
} 

int AddNumbers::getSum() const 
{ 
     return _a + _b; 
} 

입니다. 헤더와 CPP 파일

[email protected] lib$ make 
g++ -Wall -I -c AddNumbers.cpp -o AddNumbers.o 
/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: error: ld returned 1 exit status 
make: *** [AddNumbers.o] Error 1 
[email protected] lib$ 

가 어떻게이 문제를 해결할 수이 내 출력 서로

CC=g++ 

ifeq ($(DEBUG),yes) 
    CXXFLAGS=-Wall -g 
    LDFLAGS=-Wall -g 
else 
    CXXFLAGS=-Wall 
    LDFLAGS=-Wall 
endif 

AR=ar 
ARFLAGS=rcs 

INC=AddNumbers.h 
SRC=AddNumbers.cpp 
OBJ=AddNumbers.o 
OUT=libAddNumbers.a 

INCLUDES= -I #./$(INCPATH) 

default: $(OUT) 

$(OUT): $(OBJ)  
    $(AR) $(ARFLAGS) [email protected] $(OBJ) # The @ means use the target name 

%.o: %.cpp $(INC) 
    $(CC) $(CXXFLAGS) $(INCLUDES) -c $< -o [email protected] 

.PHONY: clean cleanall 

clean: 
    rm -f *.o 

cleanall: clean 
    rm -f $(OUT) 

옆에?

+0

그 라이브러리가 메인을 가지고 있다고 가정하지 마십시오 – MistyD

+0

나중에 참조 할 수 있도록 새로운 기술에 대한 첫 시도는 가능한 한 간단해야합니다. 정적 라이브러리에서의 첫 번째 시도는'HelloWorld.a'입니다. – Beta

답변

0

-I-c 인수를 삼키고 있으므로 gcc는 그것을보고 사용하지 않으며 compile-only 모드를 사용한다고 생각합니다.

귀하의 -I 인수에 값을 주거나 그 값을 제거하고 그 값이 작동하는지 확인하십시오.

+0

그 트릭을했다. 감사 (답변으로 표시) – MistyD