Linux下开发环境的搭建(For C++ OIer)
说句实话,对于OIer来说,Linux真的是个很好的开发平台。
这里既没有游戏的喧嚣,也没有广告的打扰,gcc/g++早已预装,一切已为你准备好......(???)即使对于日常使用,也绰绰有余。
如果因为不熟悉、对新手不友好、不知道、没有Dev-C++等理由,去放弃它,未免也太可惜了。
那么,如何在Linux下搭建一个好的开发环境呢?
在下面,我会分三部分叙述Linux开发环境搭建的过程,并推荐一些比较好用的软件,供大家平日使用参考。
(注:以下命令,请在终端中运行。如果因依赖关系报错,请用sudo apt install -f 命令修复)
机器环境:Ubuntu 14.04 LTS,GCC/G++ 4.8.4
一、编译器安装
GCC/G++ 安装命令:
sudo apt install gcc g++
Clang编译器:
sudo apt install clang
大家按需食用。
二、代码编辑
(注:下面的软件在严格意义上讲可能不是IDE,但同样适用于广大的OIer们。Enjoy it!)
No.1 入门级
1. Code::Blocks
(晒晒我的美照)

这个IDE是开源、跨平台的,比较好用,代码补全功能也非常强大!
可能唯一不友好的地方就是全英文了的吧。
安装命令:
sudo add-apt-repository ppa:damien-moore/codeblocks-stable
sudo apt update
sudo apt install codeblocks
易用性:8分
功能性:9分
可扩展性:6分
2. gedit

gedit很多Linux发行版都自带,在NOI Linux中也是允许的。经过一些配置以后,还是非常好用的。
当然,gedit仅仅提供了基础的编辑功能。编译、调试/代码补全等功能,都是不具备的。
所以,这个可以平时不使用,考场备用。
易用性:8分
功能性:7分
可扩展性:6分
3. Visual Studio Code

(网上随便找的图)
很多朋友都听说过Visual Studio,却因为其庞大的体量而望而却步(动辄10~20G)。那么,就不妨试一下这款轻量级的IDE吧。
它拥有美观的界面,数以万计的扩展,可以轻松地搭建一个令人舒适的开发环境。最重要的是,它跨平台!!!
当然,它也是我最喜欢的代码编辑器之一(只是现在我没用它了,改用了vim) 。不过,它的调试功能并不是太好用,需要自己配置,请自行百度。
安装:上微软官网下载deb包,双击打开ubuntu软件中心安装即可。
在这里推荐几个扩展:
- C/C++
- C++ Intellisense
- Code Runner(运行代码用)
- One Dark Pro主题(用过Atom的人应该都知道)
- Material Theme(非常美观)
- Markdown All in One
- Settings Sync(自动同步配置)
- Python(对于某些人有用,当然频繁使用crayon的人应该也有点用处)
易用性:9分
功能性:9分
可扩展性:9分
No.2 进阶级
GNU Emacs

心动了?先别着急,这其实是配置过后的。
原版界面:

(一言难尽啊......)
安装命令:
sudo apt install emacs
Emacs,(所谓神的编辑器) 相信很多OIer都听说过,但却因为其清(chao)秀(chou)的界面望而却步。
不过,Emacs的可定制性弥补了他的缺点。通过一系列配置,你可以把它变成自己想要的样子,再加上几个一键编译的快捷键,岂不爽翻?
说到底,怎么配置Emacs呢?这篇文章可能可以帮到你:
当然,你也可以自行百度。
不想费脑筋?把我的配置拿去:(F5一键编译,编译出的文件名为a.out)
(注:配置文件为~/.emacs,请将下面的文本复制后粘贴到此文件下)
(show-paren-mode 1)
(global-set-key (kbd "C-a") 'mark-whole-buffer)
(global-set-key (kbd "C-z") 'undo)
(global-set-key (kbd "RET") 'newline-and-indent)
(cua-mode t)
(show-paren-mode t)
(global-linum-mode t)
(blink-cursor-mode -1)
(setq kill-ring-max 200)
(setq default-cursor-type 'bar)
(setq default-tab-width 4)
(setq c-default-style "awk")
(set-background-color "gray15")
(set-foreground-color "gray")
(set-frame-parameter (selected-frame) 'alpha (list 85 50))
(defun your-g++-compile () (interactive) (compile (format "g++ %s -g -Wall -std=c++11" (buffer-file-name))))
(global-set-key (kbd "<f5>") #'your-g++-compile)
易用性:8分(熟悉后可以打9分)
功能性:9分
可扩展性:9.5分
No.3 大神级
看到这里,你应该知道我要说什么了吧?
没错,那就是上天入地、翻江倒海 (什么鬼) 、出神入化的——
Vim!
摘用度娘的一句话:
- Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
而且插件丰富,扩展性极高!
安装命令:
sudo apt install vim
然额,它的原始界面似这样的:

(比Emacs好不了多少,一个宣传GNU,一个帮助可怜儿童)
更让人崩溃的是,这个vim居然不知如何使用!进入界面,一通乱打,却一个字也敲不进,更不知如何调主题、保存文件......
甚至无法退出!!!
先别急着关掉这篇博客,别急,我们慢慢来,这些问题都好解决。如果你熟悉了vim的操作方式,会发现编程效率极高。
那么,如何学习vim的操作方式?
别急着网上搜教程,你的vim自带了一个教程——vimtutor。
终端输入vimtutor,回车运行即可(还是中文版的,好评)。
学了这篇教程,差不多vim的基本操作都会了。
说完了操作,再说说配置(配置文件为~/.vimrc)
相对而言,vim配置比emacs简单多了。为什么呢?因为网上有人已经帮我们配置好了啊!
参见这个链接:vimplus
在此必须感谢vimplus的维护者chxuan。如果没有他,可能我们就无法轻松、快速地配置好vim。
不过,vimplus的配置没有什么一键编译,甚至不能从系统剪贴板复制、粘贴。
所以,附上我的附加配置(+c 复制,+v 粘贴,+x 剪切,编译,运行):
(复制后粘贴在.vim的最后)
hi Normal ctermfg=252 ctermbg=none
command -nargs=0 Compile !clear&&g++ "%" -o "%<" -Wall -std=c++11 -g
command -nargs=0 Run !clear&&time "./%<"
map <F5> <ESC>:w<CR> <ESC>:Compile<CR>
map <F6> <ESC>:w<CR> <ESC>:Run<CR>
map <leader>v "+gp
map <leader>c "+y
map <leader>x "+d
set mouse=a
配置后界面:

(还要打分么......)
易用性:5分(熟悉后可以打9.5分)
功能性:10分
可扩展性:10分
三、调试器
很多OIer们,想必都用过Dev-C++下的调试器。确实,Dev-C++下的调试器方便好用(除了不支持STL),但在Linux下,又有什么调试器可用呢?
1. gdb

gdb是一个CLI调试器,没有图形化界面,但在熟练使用后,是非常方便的。而且他拥有很多高级功能(如给断点设置一个条件,满足这个条件才在该断点停下来)。
启动方式:终端运行gdb [文件名] 即可。
教程吗,请自行百度。顺便提一句,gdb有个半图形化界面,用gdb -tui即可进入。
2.ddd
安装命令:
sudo apt install ddd
ddd虽说是一个图形化调试器,但他界面真的极其怪异,Like this:

但是,它的功能真的非常强大,包括但不限于:
- 图形化显示结构体
- 图形化显示链表、二维数组(矩阵)、树、图
- 显示变量变化图像
- ...
当然,其也是可以配置的。请自行百度。
3.nemiver

这应该是三者之中,界面最好看、最友好的,但功能也最弱,对于一般调试需求也够了。
安装命令:
sudo apt install nemiver
当然,可能有很多好用的软件,限于作者学识,没有在本文中提到。大家可以在评论区留言,给我一些适当的建议!
讲了这么多,希望能对大家有点用处!
蒟蒻第一次写博客,请大佬多多关照,顺便别忘点个赞再走哦!
Linux下开发环境的搭建(For C++ OIer)的更多相关文章
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- Linux 下开发环境的搭建(软件安装)
一.Centos6.5下安装JDK 步骤1: 查看现有安装的JDK版本 rpm –qa | grep -i java 步骤2: 卸载已有软件 rpm -e --nodeps java-1.7.0-op ...
- 记一次Linux下JavaWeb环境的搭建
今天重装了腾讯云VPS的系统,那么几乎所有运行环境都要重新部署了.过程不难懂,但是也比较繁琐,这次就写下来,方便他人也方便自己日后参考参考. 我采用的是JDK+Tomcat的形式来进行JavaWeb初 ...
- Linux下服务器环境的搭建和配置之一——Apache篇
最近一个多月(2016-06-20开始至今),一直在忙海外广告平台FAQ系统的开发,既要负责服务器环境的搭建,又要写前端,还要写后台和数据库,甚至还要考虑产品需求和设计.所以是一个很大的挑战,对自身也 ...
- wxWidgets 在 Linux 下开发环境配置
本文基于 CodeBlocks (16.0.1) 和 wxWidgets (3.0.2) 搭建 Linux 下 GUI 开发环境. 1. 安装 CodeBlocks Ubuntu 默认的源当前 Cod ...
- linux下Ftp环境的搭建
Ftp环境的搭建 1.ftp软件的安装 使用ssh远程连接linux系统,上传和下载一些文件,Ftp是不可少的 Ftp的安装很简单,远程登录系统后使用命令 yum list vsftpd 通过提示 ...
- Linux下自动化测试环境的搭建
1.安装Linux虚拟机,详情参考 https://blog.csdn.net/qq_22770715/article/details/78558374 https://www.cnblog ...
- python linux 下开发环境搭建
1.1: 在虚拟环境目录下安装 ipython => pip install ipython 1.2: 简单的使用 => ipthyon => print("heollo ...
- Linux下Qt环境的搭建
之前一直使用Ubuntu软件中心中的Qt4开发Qt的应用程序,现在转到Linux下来做Qt5开发,但是必须从Qt官网上面下载对应的安装包,配置起来相对麻烦一些,这里介绍整个开发流程. 首先,在官网上面 ...
随机推荐
- MySQL触发器初试:当A表插入新记录,自动在B表中插入相同ID的记录
今天第一次用MySQL的触发器,怕忘了,赶紧写篇博客记录一下. 废话不说,先上语法: 1 CREATE TRIGGER trigger_name 2 { BEFORE | AFTER } { INSE ...
- Python练习题 010:分解质因数
[Python练习题 010]将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. -------------------------------------------------- ...
- P5322 排兵布阵解题报告
本想在洛谷上交篇题解的,结果发现交不了,所以只能在这边写了... 作为一个蒟蒻,看到省选题,第一眼考虑怎么打暴力 我们可以分情况考虑 当\(s==1\)的时候 我们可以把他当成一个\(01\)背包,背 ...
- 利用 yum 命令和 rpm 命令升级 Nginx 或者安装最新版本 Nginx
方法一:使用 yum 命令升级 Nginx 1.在配置 YUM 仓库的目录(/etc/yum.repos.d/)下新增文件 nginx.repo vi /etc/yum.repos.d/nginx. ...
- 前端传递的json格式与SpringMVC接收实体类的对应关系
这篇文章主要是帮助刚刚入行的猿猿尽快适应Restful风格的搬砖生活 @RequestBody注解 基本介绍:@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数 ...
- linux网络收包过程
记录一下linux数据包从网卡进入协议栈的过程,不涉及驱动,不涉及其他层的协议处理. 内核是如何知道网卡收到数据的,这就涉及到网卡和内核的交互方式: 轮询(poll):内核周期性的检查网卡,查看是否收 ...
- Mac zsh中所有命令失效
参考文章 https://blog.csdn.net/hujincai_55/article/details/95680245?utm_medium=distribute.pc_relevant.no ...
- day23 Pyhton学习 昨日回顾.re模块.序列化模块
一.昨日回顾 #__file__查看当前文件所在的绝对路径 #time 时间模块 time.time 获取当前时间戳时间 字符串->time.strptime->结构化->mktim ...
- pytest文档50-命令行参数--durations统计用例运行时间
前言 写完一个项目的自动化用例之后,发现有些用例运行较慢,影响整体的用例运行速度,于是领导说找出运行慢的那几个用例优化下. --durations 参数可以统计出每个用例运行的时间,对用例的时间做个排 ...
- 基于python实现顺序存储的栈
""" 栈 sstack.py 栈模型的顺序存储 重点代码 思路总结: 1.列表是顺序存储,但功能多,不符合栈的模型特征 2.利用列表,将其封装,提供接口方法 " ...