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)
옆에?
그 라이브러리가 메인을 가지고 있다고 가정하지 마십시오 – MistyD
나중에 참조 할 수 있도록 새로운 기술에 대한 첫 시도는 가능한 한 간단해야합니다. 정적 라이브러리에서의 첫 번째 시도는'HelloWorld.a'입니다. – Beta