一个简单的C++程序和makefile文件,在执行make时候报错,下面是详细信息:
下面是hello.cpp文件内容
[cpp] view plain copy
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!\n";
}
下面是makefile文件内容
[plain] view plain copy
test : hello.o
gcc -o test hello.o
hello.o : hello.cpp
gcc -c hello.cpp
.PHONY : clean
clean :
rm hello.o
执行make时错误信息如下:
问题原因是链接命令出错,这里要注意gcc和g++的使用区别
g++在编译时会把.c和.cpp后缀的源文件当成c++程序来处理
gcc在编译时会把.c后缀源文件当成c程序来处理,把.cpp后缀源文件当成c++程序来处理
在链接的时候,由于gcc不能自动和c++程序使用的库链接,所以对于.cpp的程序不能使用gcc来链接,而应该使用g++或者gcc -lstdc++
解决方案:
[plain] view plain copy
test : hello.o
gcc -o test hello.o -lstdc++
hello.o : hello.cpp
gcc -c hello.cpp
.PHONY : clean
clean :
rm hello.o
或者
[plain] view plain copy
test : hello.o
g++ -o test hello.o
hello.o : hello.cpp
gcc -c hello.cpp
.PHONY : clean
clean :
rm hello.o