第一步,要安装C++的编译器g++
使用如下命令:
root@wl-MS-7673:/home/wl/桌面/c++# apt-get install g++
第二步,开始我们的hello world
使用Vim建立helloworld.cpp,输入如下:
root@wl-MS-7673:/home/wl/桌面/c++# cat helloworld.cpp
#include <iostream>
int main()
{
using namespace std;
cout<<"hello world"<<endl;
return 0;
}
root@wl-MS-7673:/home/wl/桌面/c++# g++ helloworld.cpp -o helloworld
root@wl-MS-7673:/home/wl/桌面/c++# ./helloworld
hello world
使用g++ 编译,运行输出helloworld!暂时胜利,好的开始就是成功的一半!g++的编译选项稍后再讲。
第三,开始我们的makefile
对于有很多cpp的文件的工程,每次进行编译都要输入一大串命令进行编译,对我们来说肯定是无法接受的,那有没有更好的办法呢?有!makefile
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
首先体验下不用makefile时多文件的编译:
建立文件test.ccp test.hpp test1.cpp test1.hpp
root@wl-MS-7673:/home/wl/桌面/c++# cat -n test1.cpp
1 #include"test1.hpp"
2 int calculate(int const& a, int const& b)
3 {
4 int c;
5 c = a + b;
6 return c;
7 }
root@wl-MS-7673:/home/wl/桌面/c++# cat -n test1.hpp
1 #include <iostream>
2 int calculate(int const& a, int const& b);
root@wl-MS-7673:/home/wl/桌面/c++# cat -n test.c
cat: test.c: 没有那个文件或目录
root@wl-MS-7673:/home/wl/桌面/c++# cat -n test.cpp
1 #include "test.hpp"
2 using namespace std;
3 int main()
4 {
5 int x(3);
6 int y(5);
7 int c;
8 c = calculate(x,y);
9 cout<<c<<endl;
10 }
root@wl-MS-7673:/home/wl/桌面/c++# cat -n test.hpp
1 #include <iostream>
2 #include "test1.hpp"
root@wl-MS-7673:/home/wl/桌面/c++#
然后进行编译:
root@wl-MS-7673:/home/wl/桌面/c++# vim test1.hpp
root@wl-MS-7673:/home/wl/桌面/c++# vim test.cpp
root@wl-MS-7673:/home/wl/桌面/c++# vim test.hpp
root@wl-MS-7673:/home/wl/桌面/c++# g++ -c test1.cpp -o test1.o
root@wl-MS-7673:/home/wl/桌面/c++# g++ -c test.cpp -o test.o
root@wl-MS-7673:/home/wl/桌面/c++# g++ test1.o test.o -o out
root@wl-MS-7673:/home/wl/桌面/c++# ls
a.out helloworld helloworld.cpp out test1.cpp test1.hpp test1.o test.cpp test.hpp test.o
root@wl-MS-7673:/home/wl/桌面/c++# ./out
8
这样,我们有多个文件的话编译效率很低,下面试试makefile的强大威力!
我们建立makefile文件如下:
root@wl-MS-7673:/home/wl/桌面/c++# cat -n makefile
1 mycplusplus : test.o test1.o
2 g++ test1.o test.o -o mycplusplus
3 test1.o : test1.cpp
4 g++ -c test1.cpp -o test1.o
5 test.o : test.cpp
6 g++ -c test.cpp -o test.o
7
root@wl-MS-7673:/home/wl/桌面/c++# ls -al
总用量 32
drwxr-xr-x 2 root root 4096 3月 16 15:55 .
drwxr-xr-x 9 wl wl 4096 3月 16 15:16 ..
-rw-r--r-- 1 root root 96 3月 16 15:19 helloworld.cpp
-rw-r--r-- 1 root root 159 3月 16 15:54 makefile
-rw-r--r-- 1 root root 99 3月 16 15:34 test1.cpp
-rw-r--r-- 1 root root 63 3月 16 15:35 test1.hpp
-rw-r--r-- 1 root root 123 3月 16 15:37 test.cpp
-rw-r--r-- 1 root root 41 3月 16 15:37 test.hpp
root@wl-MS-7673:/home/wl/桌面/c++# make
g++ -c test.cpp -o test.o
g++ -c test1.cpp -o test1.o
g++ test1.o test.o -o mycplusplus
root@wl-MS-7673:/home/wl/桌面/c++# ls -al
总用量 48
drwxr-xr-x 2 root root 4096 3月 16 15:55 .
drwxr-xr-x 9 wl wl 4096 3月 16 15:16 ..
-rw-r--r-- 1 root root 96 3月 16 15:19 helloworld.cpp
-rw-r--r-- 1 root root 159 3月 16 15:54 makefile
-rwxr-xr-x 1 root root 7850 3月 16 15:55 mycplusplus
-rw-r--r-- 1 root root 99 3月 16 15:34 test1.cpp
-rw-r--r-- 1 root root 63 3月 16 15:35 test1.hpp
-rw-r--r-- 1 root root 1556 3月 16 15:55 test1.o
-rw-r--r-- 1 root root 123 3月 16 15:37 test.cpp
-rw-r--r-- 1 root root 41 3月 16 15:37 test.hpp
-rw-r--r-- 1 root root 1824 3月 16 15:55 test.o
root@wl-MS-7673:/home/wl/桌面/c++# ./mycplusplus
8
root@wl-MS-7673:/home/wl/桌面/c++#
运行makefile后自动进行编译并输出mycplusplus
运行./mycplusplus输出结果~
大功告成,很easy吧~