Linux C++轻量级开发指南
作为一名产品开发,一套顺手的集成开发环境必不可少。大多数时候,开发经理将精力投入在产品需求分析上而忽视了研发质量甚至连基本的集成开发环境都没有统一。当然,如果你们的项目仅仅需要部署在单一的环境中或没有跨语言开发需求,通常这样做还不会造成严重问题。可是一旦你需要面对一套相对复杂的系统,异构系统间的通讯等问题。在项目开始阶段,统一各个部分的集成开发环境非常重要。我将通过一系列的文章向你介绍我在企业级开发工作中使用的解决方案。当然,这些都是可能都包含了强烈的个人特色,不见得完全适用于所有的企业,甚至有些观点也值得商榷。只希望能够起到一个抛砖引玉的作用,有兴趣的小伙伴一起探讨。
目前,我所担任的工作主要包含了轻量化的桌面系统,浏览器端以及基于Linux系统的底层通信开发。需要使用的语言包括Java、C++和JavaScript。没有分布式和大数据的需求。需要开发底层通信的原因主要是,我们有大量的数据是直接通过硬件设备来获取,因此这部分的工作主要使用C++来完成,业务层考虑到部署和开发的效率偏重使用Java来实现,前段没有太多的选择JavaScript是不二之选。
首先阐述一下Java和C++这两门语言的开发适应性问题。由于企业和个人定位的缘故,我对这两门主流语言都有一定的开发经验,遇见过各种奇葩需求也实现过各种神奇功能。相对来说,较小的底层功能模块处于运算效率的考量,我会偏向于使用C++来做。而针对业务系统,服务组件或需要超过10人以上的团队来合作开发的项目Java依然是我的唯一选择。无论是企业还是个人开源,你所面对的开发任务更倾向于特定需求而非科研,使用C++作为开发语言,无论你的开发经验多么丰富都势必会陷入语言特性所造成的泥沼中无法自拔。相比较而言,牺牲一些机器性能所换来的是更快的迭代、更少的BUG和更丰富的生态。因此作为一名开发工程师,无论如何不要墨守成规,新技术或新语言可能只需要1行代码就能轻松解决你在5年前需要100行代码才能完成的任务,如果这时你还以前辈自居,那么离被市场淘汰也就不远了。
接下来言归正传,Linux下的C++开发工具很多,有人习惯用vim也有人会使用QtCreator或其他乱七八糟的IDE。而我更推荐使用微软的开发神器Visual Studio Code,与其它的产品相比它足够轻量级也更加灵活。唯一不太方便的是,用它开发基于Qt的产品不合适。不过我在前面已经阐述,界面端使用JavaScript才是更加合理的选择。
安装完成以后,你需要一个C++插件,这里推荐微软的官方版本:
完成以后就可以和你的小伙伴们开心的工作了。那么,如何进行编译和调试呢?其实vsc本身提供了配置文件来完成这些任务。不过我并不推荐你去学习它。我更建议你通过Makefile来完成这项传统工作,因为这样做会使得你的工程具备更广泛的适应性。这也就是为什么,很多人推荐在Linux下使用vim来作为开发工具的原因,不过直接使用vim,开发效率实在太低。
最后介绍一下如何调试。相信如果你在网上搜索Linux vsc debug几个关键字,会跳出很多答案,不过这些都不是我喜欢的。我们使用vsc的初衷是使开发变得高效和简单,任何多余的配置都应该放弃。既然我们已经采用了make和Makefile作为我们的编译工具,只需要将gdb作为编译条件即可获得调试版本。然后我们为vsc增加一个配置文件launch.json,具体生成的方法网上有。然后将“program”对应的值设置为Makefile文件中指定的生成名。
F5即可进行断点调试。
最后提交代码的时候,只需要源码文件和对应的Makefile即可。
Linux C++轻量级开发指南的更多相关文章
- C#在Linux上的开发指南
本人才疏学浅,在此记录自己用C#在Linux上开发的一点经验,写下这篇指南.(给想要在Linux上开发C#程序的朋友提供建议) 目前在Linux上跑的网站:http://douxiubar.com | ...
- C#在Linux上的开发指南(续)
续之前的一篇开发指南http://www.cnblogs.com/RainbowInTheSky/p/5496777.html 部分人在部署的时候经常出现dll兼容问题(其实可以看小蝶惊鸿的文章,蝶神 ...
- [翻译]现代java开发指南 第二部分
现代java开发指南 第二部分 第二部分:部署.监控 & 管理,性能分析和基准测试 第一部分,第二部分 =================== 欢迎来到现代 Java 开发指南第二部分.在第一 ...
- [转帖]2019 简易Web开发指南
2019 简易Web开发指南 2019年即将到来,各位同学2018年辛苦了. 不管大家2018年过的怎么样,2019年还是要继续加油的! 在此我整理了个人认为在2019仍是或者将成为主流的技术 ...
- java web轻量级开发面试教程
最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二 ...
- 开源项目SMSS开发指南(二)——基于libevent的线程池
libevent是一套轻量级的网络库,基于事件驱动开发.能够实现多线程的多路复用和注册事件响应.本文将介绍libevent的基本功能以及如何利用libevent开发一个线程池. 一. 使用指南 监听服 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- Linux静态库生成指南
Linux静态库生成指南 Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...
随机推荐
- JSP实现系统登录
计算机通过统一资源定位符实现资源访问,URL:Uriform Resource Locator Tomcat服务器的目录结构 /bin:存放各种平台下用于启动和停止Tomcat的脚本文件 /conf: ...
- Spring 7大模块的解说
先看以下Spring的组成图: 7大模块包括:core.AOP.ORM.DAO.WEB.Context.WebMvc. 1:core:spring的容器,主要组成是BeanFactury.也是Spri ...
- 微信小程序商城构建全栈应用 Thinkphp5
课程——微信小程序商城构建全栈应用[目录]第1章 前言:不同的时代,不同的Web第2章 环境,工具与准备工作第3章 模块,路由与获取请求参数第4章 构建验证层第5章 REST与RESTFul第6章 A ...
- Qt线程实现分析-moveToThread vs 继承
最近抽空研究了下QThread,使用起来方式多种多样,但是在使用的同时,我们也应该去了解Qt的线程它到底是怎么玩儿的. Qt的帮助文档里讲述了2种QThread的使用方式,一种是moveToThrea ...
- 62 (OC)* leetCode 力扣 算法
1:两数之和 1:两层for循环 2:链表的方式 视频解析 2:两数相加 两数相加 3. 无重复字符的最长子串 给定一个字符串,请找出其中长度最长且不含有重复字符的子串,计算该子串长度 无重复字符的最 ...
- [VB.NET Tips]字符串连接
在很多应用场景下我们都需要对字符串进行拼接操作. 在每一次连接字符串时,都要在堆上分配新的内存空间,每一个分配都有一定的消耗. 较长的字符串在堆中分配,对其进行连接操作需要花费很长的时间,先连接小的字 ...
- 浅析html+css+javascript之间的关系与作用
三者间的关系 一个基本的网站包含很多个网页,一个网页由html, css和javascript组成. html是主体,装载各种dom元素:css用来装饰dom元素:javascript控制dom元素. ...
- Flume系列一之架构介绍和安装
Flume架构介绍和安装 写在前面 在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中, ...
- python的元组存储的实质和多元赋值
python中有一种赋值机制即多元赋值,采用这种方式赋值时,等号两边的对象都是元组并且元组的小括号是可选的.通常形式为 x, y, z = 1, 2, 'a string' 等同于 (x, y, z) ...
- hihttps教你在Wireshark中提取旁路https解密源码
大家好,我是hihttps,专注SSL web安全研究,今天本文就是教大家怎样从wireshark源码中,提取旁路https解密的源码,非常值得学习和商业应用. 一.旁路https解密条件 众所周知, ...