2017-04-07 60 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的問題!