Не удалось создать первую библиотеку. `неопределенная ссылка на` main`

Я пытаюсь создать свою первую статическую библиотеку на основе Linux. Я следую указаниям этого сайта здесь.

Это код

#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;
}

Это make-файл, который я использую. Файлы заголовка и cpp находятся рядом друг с другом

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) $@ $(OBJ)    # The @ means use the target name

%.o: %.cpp $(INC)
$(CC) $(CXXFLAGS) $(INCLUDES) -c $< -o $@

.PHONY: clean cleanall

clean:
rm -f *.o

cleanall: clean
rm -f $(OUT)

Это мой вывод

admin@localhost 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
admin@localhost lib$

Как я могу исправить эту проблему?

0

Решение

Я верю твоим аргументам -I глотает ваш -c аргумент, так что GCC не видит его и использовать compile-only Режим.

Либо дай свой -I аргумент значение или избавиться от него и посмотреть, если это работает.

0

Другие решения


По вопросам рекламы [email protected]