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',都是些这样的未定义的东西,谁能帮我解决下阿……

作者: zm593811620   发布时间: 2011-03-21

应该用g++吧!

作者: sundesheng125   发布时间: 2011-03-21