Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

时间:2022-04-01 09:17:45

回忆上年大一的时候自己自学linux开始在ubuntu下写程序的时候,由于对linux一点都不懂,走了不少弯路。现在总结一下,帮助初学者掌握如何在ubuntu中编写运行简单的c和c++程序,用来刷刷题练习啥的。在此不用任何集成开发环境(IDE),都是大同小异,,g++(gcc)+gdb调试器是linux下的最强组合,写程序用的是编辑器vi或vim,(也可以用另一大神奇emacs).在windows用习惯的童鞋一开始可能不太好接受这种方式,学计算机的就要有折腾的能力。vi和emacs至少要学一个,这两个玩意一开始可能会觉得怪异,虽然是文本编辑器,但是十分强大,用熟练之后写代码,改代码效率不是盖的,而且都有windows版的,一定要尽量掌握一个,我个人用的是vi,光vi这玩意就折腾我好长时间,不过现在没有vi写代码都十分不习惯。下面以命令行说明一下,记住一些常见命令够日常用的就行了。(我用的还是ubuntu10.04,后来的版本有点不习惯)在linux下基本可以完全脱离鼠标了,vi的设计哲学基本上就是完全脱离鼠标。(在IDE下来回切换键盘鼠标是很慢的,不用vi你永远不知道文本编辑器能提升多少效率,在vi写代码能提速很多,但是一旦用习惯了vi,没了它就有点抓狂了,发现现在用其它IDE的文本编辑器效率反而降低了。不过vi一开始学起来是有点难度的,学习曲线比较诡异,一定要坚持下来,你绝对不会后悔。虽然一开始是打算用来装B的,但是我发现装着装着就没办法离开它了。)个人用了notepad++,UltraEdit等这些较优秀的文本编辑器后,发现还是vi最强,没有之一。

步入正题:

先打开终端terminal(快捷键Ctrl+Shift+T),输入sudo apt-get install vim安装vim编辑器(忘了是不是默认已经安装了),然后输入apt-get install build-essential安装gcc/g++/gdb/make 等基本编程工具。(要输入管理员密码)。接下来就要开始编程了。然后ls显示当前有目录有哪些文件,显示的我的主目录,现在用mkdir命令建立一个新文件夹test用来演示。Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

用cd test切换到当前test目录,然后用命令输入vi test.cpp回车,界面转到vi界面,开始写代码。(也用别的文本编辑器)关于vi的c语言缩进,语法高亮,显示行号,折叠神马的自己折腾一下vi吧,需要配置一下自己的.vimrc文件。写完后:wq退出。

Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

之后回到终端(要是麻烦可以多开一个终端,一个看代码,一个用来编译,执行啥的,只需要用vi的命令:w写入,然后打开另一个终端切换到相同目录执行后面的命令。我平常就是这么干)。这时执行g++ test.cpp就行了,然后ls就会发现多了一个文件a.out。(关于g++或gcc的编译选项可以参考网上一些资料或者下载gcc文档)默认是生成a.out文件。这时输入./a.out回车就可以运行刚才写的程序了.(./代表当前文件夹)

Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

可以看到输入两个数给出了它们的和。linux下ctrl+d代表eof。

如果想要输入文件有很多数据输入,例如做题时输入很多数据,除了读文件外,还可以重定向,在当前文件夹用vi in.txt建立输入文件in.txt

 

Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

保存后退出,然后利用重定向符号<,把文件数据重定向到程序输入,可以得到程序执行的结果。

Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

然后是怎么用gdb调试,调试的话必须要在用g++或者gcc(gcc默认不连接数学库需要<math.h>时,用-lm编译选项连接)加入编译选项-g,就是用命令g++ -g test.cpp编译后,用gdb a.out执行。可以看到gdb的版本信息。

Linux(ubnutu)下编写运行c,c++程序的方法gcc+gdb(图示)

此时就可以开始调试了。关于gdb的详细使用还是读者自己参考网上资料或者下载gdb使用手册,只需要一些常用命令就可以满足基本的调试需求。在这里只是入门的简介,关于这些工具具体使用还是需要参考一些文档资料及手册(gcc,vi,gdb均有详细的手册),熟练使用需要经过一定的练习。当初入门的时候全靠自己,很多东西都摸不着头脑,现在来看倒是很简单。写下来希望帮助一些刚入门摸不着头脑的童鞋。

http://pan.baidu.com/share/link?shareid=548114&uk=3239809682

这是我的网盘地址,文件里有六个文件,linux下的vi, gcc, gdb, make, emacs中文手册。打包分享。