第一步,要安装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吧~