我在linux中做了一个示例项目但是在运行main Makefile时遇到错误
项目信息:
项目/数据库文件夹,包含文件database.h,database.cpp,bulid-database,Makefile
database.h
/*data base file*/ #includeusing namespace std; class mydatabase { public: mydatabase(int a , int b); int sum(){return m_a +m_b;} int diff(){return m_a -m_b;} int mul(){return m_a *m_b;} float div(){return m_a /m_b;} int reminder(){return m_a %m_b;} private: int m_a , m_b; };
database.cpp
#include "database.h" mydatabase::mydatabase(int a ,int b):m_a(a) , m_b(b) { }
bulid数据库
make if [ -f libdatabase.a ]; then echo "Database-Library Build Success" cp libdatabase.a ../LIBs/ else echo "databse-Library Build Failure" fi
Makefile文件
HEADERFILES = $(wildcard *.h) CPPFILES = $(wildcard *.cpp) OBJFILES = $(patsubst %.cpp,%.o ,$(wildcard *.cpp)) $(OBJFILES): %.o : %.cpp $(HEADERFILES) g++ -c -o $@ $< ar ruv libdatabase.a $@ ranlib libdatabase.a
具有文件main.cpp,Makefile的项目/主文件夹
main.cpp中
#include "database.h" #includeint main() { mydatabase *obj = new mydatabase(10 ,5); std::cout<<"sum is"< sum()< diff()< mul()< div()< reminder()< Makefile文件
CC = g++ INCPATH = -I. \ -I.. \ -I../database LIBPATH = -L../LIBs LDFLAGS = ${LIBPATH}/libdatabase.a CFLAGS = ${INCPATH} testdate:main.o $(CC) $(CFLAGS) -o testdate main.o $(LDFLAGS) main.o:main.cpp $(CC) $(CFLAGS) -c -o main.o main.cpp问题:数据库生成文件工作正常,但主要的Makefile我有一些问题,如
错误: main.o:在函数
main': main.cpp:(.text+0x92): undefined reference to
mydatabase :: mydatabase(int,int)'collect2:ld返回1退出状态