linux下面C++编译的makefile编写,出错~
OBJT=animal.o fish.o Mainc.o
test:$(OBJT)
gcc -g $(OBJT) -I. -o test
animal.o:animal.cpp animal.h
gcc -c animal.cpp
fish.o:fish.cpp fish.h animal.h
gcc -c fish.cpp
Mainc.o:Mainc.cpp animal.h fish.h
gcc -c Mainc.cpp
clean:
rm -f test *.o
这是我写的makefile文件,工程是这样的,fish是animal的一个子类。Mainc.cpp的内容是:
#include <iostream>
#include "animal.h"
#include "fish.h"
using namespace std;
void fn(Animal *ptr)
{
ptr->drink();
}
int main()
{
Fish sh;
Animal *ptr;
ptr=&sh;
fn(ptr);
return 1;
}
而在animal的cpp文件中的代码是:
#include "animal.h"
#include <iostream>
using namespace std;
void Animal::eat()
{
cout<<"Animal eat"<<endl;
}
void Animal::drink()
{
cout<<"animal drink"<<endl;
}
Animal::Animal(int w,int g) //int w,int g
{
cout<<"animal it is"<<endl;
}
Animal::~Animal()
{
cout<<"kill animal"<<endl;
}
而fish里面也差不多,工程在windows下面通过,编译起来的时候问题大概是:
undefined reference to `std::cout',都是些这样的未定义的东西,谁能帮我解决下阿……
test:$(OBJT)
gcc -g $(OBJT) -I. -o test
animal.o:animal.cpp animal.h
gcc -c animal.cpp
fish.o:fish.cpp fish.h animal.h
gcc -c fish.cpp
Mainc.o:Mainc.cpp animal.h fish.h
gcc -c Mainc.cpp
clean:
rm -f test *.o
这是我写的makefile文件,工程是这样的,fish是animal的一个子类。Mainc.cpp的内容是:
#include <iostream>
#include "animal.h"
#include "fish.h"
using namespace std;
void fn(Animal *ptr)
{
ptr->drink();
}
int main()
{
Fish sh;
Animal *ptr;
ptr=&sh;
fn(ptr);
return 1;
}
而在animal的cpp文件中的代码是:
#include "animal.h"
#include <iostream>
using namespace std;
void Animal::eat()
{
cout<<"Animal eat"<<endl;
}
void Animal::drink()
{
cout<<"animal drink"<<endl;
}
Animal::Animal(int w,int g) //int w,int g
{
cout<<"animal it is"<<endl;
}
Animal::~Animal()
{
cout<<"kill animal"<<endl;
}
而fish里面也差不多,工程在windows下面通过,编译起来的时候问题大概是:
undefined reference to `std::cout',都是些这样的未定义的东西,谁能帮我解决下阿……
作者: zm593811620 发布时间: 2011-03-21
应该用g++吧!
作者: sundesheng125 发布时间: 2011-03-21