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吧~


这是一门linuxc++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++linux下从事网络通讯领域/网络服务器的开发和架构工作。这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能:(1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux;(2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪;在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点:(1)项目本身是一个极完整的多线程高并发的服务器程序;(2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题;(3)根据收到的包的不同来执行不同的业务处理逻辑;(4)把业务处理产生的结果数据包正确返回给客户端;本项目用到的主要开发技术和特色包括:(1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】;(2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果;(3)线程之间的同步技术包括互斥量,信号量等等;(4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素;(5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程;(6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值