2017-04-07 139 views
-1

我执行一个makefile与3份为我的项目是关于超载opertions为大的数字: BigNum.hMakefile文件错误:使:*** [主]错误1

#include <vector> 
#ifndef BIGNUM_H 
#define BIGNUM_H 
class impossible_number_exception{}; 
class BigNum{ 
public: 
//some functions 
private: 
    // 
}; 
#endif 

第二部分是BigNum.cpp我包括图书馆和功能,第三部分是main.cpp中,我写测试我的图书馆:

int main(){ 
BigNum f("8913.67811"); 
BigNum r(-5453.578); 
d=-1.02+f; 
if(d>r){ 
cout<<f<<endl; 
} 
cout<<d[3]; 
return 0; 
} 

和我的makefile是这样的:

all:main.o BigNum.o 
    g++ -o a.out BigNum.o 
main.o:main.cpp BigNum.o 
    g++ -c main.cpp 
BigNum.o:BigNum.h BigNum.cpp 
    g++ -c BigNum.cpp 
clean: 
    rm -rf*.o 

和我正确放置所有的标签和空格,但我得到这个错误是它的一些行是:

g++ -c main.cpp 
cc main.o -o main 
main.o: In function `main': 
main.cpp:(.text+0x23): undefined reference std::allocator<char>::allocator() 
... 
main.cpp:(.text+0xb6): undefined reference to `BigNum::BigNum(double)' 
main.cpp:(.text+0x2d9): undefined reference to `std::ios_base::Init::~Init()' 
main.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0' 
collect2: error: ld returned 1 exit status 
<builtin>: recipe for target 'main' failed 
make: *** [main] Error 1 

我应该怎么处理这件事?

+1

您的main.cpp文件中没有包含BigNum.h。 –

+0

不,我包括:))))))) – Jahan

+0

当你在终端中键入'g ++ -c main.cpp'时会发生什么? – Matt

回答

0

现在好了,我改变我的makefile这个

CXX=g++ 
CXXFLAGS=-g 
main: main.o BigNum.o 
$(CXX) $(CXXFLAGS) -o main main.o BigNum.o 
main.o: main.cpp BigNum.h 
$(CXX) $(CXXFLAGS) -c main.cpp 
BigNum.o:BigNum.cpp BigNum.h 
$(CXX) $(CXXFLAGS) -c bignum.cpp 

和它的作品!!!!!!!! 但我无法找到关于我的第一个makefile的问题!