linux下面C++编译的makefile编写 20
OBJT=animal.ofish.oMainc.otest:$(OBJT)gcc-g$(OBJT)-I.-otestanimal.o:animal.cppanimal....
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',都是些这样的未定义的东西,谁能帮我解决下阿……
最后得到解决,将gcc的编译器换成了g++,在makefile中把所有gcc换成g++,就好了 展开
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',都是些这样的未定义的东西,谁能帮我解决下阿……
最后得到解决,将gcc的编译器换成了g++,在makefile中把所有gcc换成g++,就好了 展开
展开全部
link error,指定下库路径
追问
how?为什么编译C文件的时候就不用追问阿?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询