linux下的C++编程

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


linux下的C++编程,布布扣,bubuko.com

linux下的C++编程

上一篇:Visual Studio-JavaScript注释写法


下一篇:Java远程方法调用(RMI)