当前位置:C++技术网 > 资讯 > Linux编程:14 一分钟全面讲解Linux编程开发完整流程入门

Linux编程:14 一分钟全面讲解Linux编程开发完整流程入门

更新时间:2017-06-11 03:05:41浏览次数:1+次

    作为新手的你,作为新手的我,在开始接触Linux编程开发的时候,首先的问题就是,用什么软件写Linux代码,怎么写Linux代码,怎么编译Linux代码,怎么调试Linux代码、怎么运行Linux程序等等。往往没有人带一把的话,新手菜鸟会被这些问题困住,很容易就放弃了Linux编程。有些人虽然比较熟悉,但是并不一定愿意细细的跟你讲这些看似微不足道的事情,但是却将菜鸟新手拦在了门外。
    然而,现在编写Linux代码,方式有很多,五花八门的,也让很多人眼花缭乱,望而却步。很多软件都没有听说过,看别人玩的很溜,而自己玩起来真是有点心碎。一些人也只是玩了一些,觉得好玩就推荐给你,也没有考虑你是新手,完全是懵逼的状态,也没有多大作用。
    鉴于此,我开始尝试Linux编程的时候,绝大部分还是自己去钻研,思考分析。经历了一阵子Linux编程新手,这种入门的茫然体会是历历在目,看到别人用的各种各样的软件,只能观望。似乎跟Linux编程隔了一层薄膜。那么现在我就来捅破这层薄膜,让更多的新手全面的认识一下Linux编程开发的各种方式,然后选择一个适合自己的方式,开始做Linux编程开发吧。
    不管在什么系统环境开发,编程的基本流程还是一样的。分别是:编辑源码、编译源码、运行程序、调试程序。下面分别对这四个部分展开说明。

1.编辑源码
    说起编辑源码,首先想到的就是记事本了。如Windows自带的记事本、Linux自带的vi命令。都是可以当做编辑代码使用的工具。如果说要快速学习编程,这两个就够了。在学习的过程中,代码量都是很小的,所以用不着很复杂的编辑工具。特别是Linux环境下,一些强大的编辑工具使用复杂,还需要先学习如何使用,比较麻烦。当然,如果使用了Linux的xWindow图形界面,也就和Windows一样使用记事本编辑代码就可以了。对于编辑代码的工具,就太多了。一般能够编辑文本的工具都可以。然后高级一点的就是带有语法提示、代码高亮、自动补全功能的编辑器了。
    直接使用编辑器写代码,适合快速写测试程序或学习时写代码。而正式开发项目时,因为开发量大,工程需要管理,所以不建议使用编辑器直接写代码,因为效率会比较低。
    所以通常情况下,都会使用集成开发环境IDE来写代码。IDE集成了项目管理、编辑器、代码跟踪阅读、智能代码补全、语法检测等等功能,可以帮助你快速写完代码,开发效率会很高。当然,IDE一般也会集成编译器和链接器等。所以IDE开发是非常方便的。
    不过在第一部分,通过以上的介绍,我相信你对编程开发第一步也就清楚了,Linux上也是如此。只是编辑的环境和方式稍有不同而已。如果你对Linux完全不熟悉,那么先用起来再说。你可以安装虚拟机来使用Linux,或者使用C++技术网提供的Linux服务器,只要是会员就可以分配一个账号登录使用,不用费心安装虚拟机和在虚拟机中安装Linux了,对于新手来说这是很方便的,免得在开始写代码前就被弄得很疲惫了。
    在可视化界面上写代码,保存代码,都是很简单的事情。那么在Linux的命令终端上如何写代码呢?这个还得说道说道。
    我们先要创建一个代码文件,可以在终端上输入:
vi hello.c

    然后回车,就进入了编辑界面。进去的时候,是不能直接敲代码的。我们使用vi还得掌握几个小技巧。对于Vi的使用,请阅读《Linux的常用Shell命令新手入门:文件操作命令4-编辑文件命令vi 》。
    写完代码后退出保存。然后代码文件hello.c就保存在命令所在的当前目录。你可以通过命令ls查看刚才编写好的代码文件hello.c,然后可以用:
cat hello.c

    查看文件的内容,而不用启用vi编辑。代码写好后,下一步就是编译代码。

2.编译源码
    当代码编辑好后,就得到一个文本文件,比如以.c或.h或.cpp结尾的文件。你要编译这些文件,如何编译呢?在Windows中,我们使用VS可以完全自动化搞定这些事情,使用F5、F7就可以自动编译了,你都可以不用知道编译器的存在。从而可以让你更加专注于代码的学习。
    然而对于Linux编程,编译可就难倒了很多人。代码文件放到哪里编译呢?怎么编译呢?
    如果你直接在Linux系统下创建的文件,就可以省去代码放在哪的问题,就只有如何编译代码的问题。而如果是在Windows下写的代码,放到哪里编译呢?如何编译呢?
    先来说说Linux下如何简单的编译代码。上面我们创建好了hello.c代码文件。要编译此代码,我们要使用gcc编译器。如下:
gcc hello.c

    或
gcc hello.c -o h

    前者编译后生成程序a.out,后者生成程序h。gcc命令后面空格,然后跟上程序文件路径名,如果要指定输出的程序名称,就加上-o,后面空格后写上生成的程序名称。
    编译还有很多复杂的选项,就不在此介绍,入门之后你自然会深入的。那么上面就已经说完了Linux下编译程序,其实也不难哦。这是在Linux上直接写的代码的编译。
    而我们很多人都是在Windows上写的代码,这个代码如何放到Linux上去编译呢?只要代码到了Linux上,编译方法和前面讲的一样。在这里就涉及到代码上传的问题了。实现方式有很多种,所以我得进一步全面的说说。不管怎么样,本质都是将代码上传到Linux上,然后在Linux上编译程序。
    上传文件到Linux的方式,那就是八仙过海各显神通了。典型有有这些:FTP、SFTP(SSH)、SVN、共享文件夹、Samba网络磁盘、网络通信上传。反正你能想到的上传方式都可以,只要代码能够到Linux上去都行。
    你可以在Linux上配置各种服务器,然后Windows上作为客户端来上传代码文件。至于要使用哪一种,个人喜好了。我使用的方式是SFTP。SFTP比FTP安全些,而且我们可以用SSH2方式直接登录Linux服务器,使用的软件可以是WinSCP。只要支持SFTP就行。当然,对于少量测试代码,我会用SFTP自己上传然后编译。而如果是大型的项目,我选择使用VS2010+VisualGDB插件。VisualGDB插件会自动通过SSH上传代码到Linux。当然,还可以在VS中按照Windows上的编码一样编译和调试,插件会自动帮我们将代码上传到Linux上,然后在Linux编译好,然后将编译结果传回来VS中。这种方式就是我现在正在使用的方式,对于Windows开发者来说,这是最快最方便切入Linux编程的方式了。最大程度复用之前的开发习惯和软件使用经验。你还可以选择VS2017,可直接支持SSH上传代码编译Linux代码,不需要插件。
    不管怎么样,这一步只是为了上传代码和编译代码。建议你尽可能使用你熟悉的软件来写代码和上传代码。这样不用花很多时间去学习其他软件的使用了。
    如果是VS下上传的代码,就不需要你手动去编译了,VS会帮你编译好。但是对于想深入学习Linux编程的,先推荐自己上传源代码,然后手动编译。然而在实际项目开发时,使用VS倒是不错的选择。你都不用自己写MakeFile文件了,VS帮你搞定了。

3.运行程序
    那么既然程序也编译出来了。如何运行程序呢?运行的效果如何呢?我们生成的程序文件,在Linux中,可以不要后缀名的。前面生成的h就是没有后缀名的,但是它确实是可执行文件哦。是不是可执行文件,就看文件有没有具备可执行的权限。我这里不去介绍权限的问题,如果不清楚你自己去查阅资料学习一下。因为生成的程序都是自动赋予了可执行权限的。问题就是怎么去运行它的问题,以及它运行起来后的效果。
    我们一般在Linux终端运行程序,就和Windows中的DOS窗口中运行程序是一样的。标准的输出打印都会在终端中显示出来。你在生成程序文件的这个文件夹下,如果要启动程序,不能直接输入程序的名称。而需要在程序名称前加上“./”,表示当前目录下的文件,否则找不到文件的。例如:
./h

    如果你想运行的程序成为后台运行的程序,就像Windows的服务程序一样,在后台持续运行着,不需要交互。那么你就在启动程序的后面加一个空格,输入&,回车即可。如:
./h &

    程序启动打演出D,然后就回到了命令行状态下。如果是直接运行的程序,如果在执行过程中想中途退出程序,可以按Ctrl+Z退出到命令行状态。而在VS的环境下启动的运行,就不需要你在Linux上启动了。只要启动调试运行,在VS中就可以看到输出的打印信息,直接在VS中启动了运行。其实VS也是启动了Linux中的程序,然后将程序的输出结果在VS中显示而已。

4.调试程序
    前面3步,已经将Linux编程的基本流程说了。在编写完代码后,如果语法没有错误,后续程序出错了,我们还得调试代码。在Linux中调试使用的是gdb。gdb调试程序那是要好好学习的,我就不在这里介绍了。新手入门先不急着玩gdb,先把前三步玩熟了再专门学一下gdb的使用。
    我很少使用gdb直接调试的,而是借助VS+VisualGDB在VS中调试的。调试时和Windows代码差不多,所以很方便。要学习VisualGDB远程调试原理,请阅读《gdb远程调试原理和远程调试gdbserver环境安装》。