Linux初步(二)——Linux 简单编程

编程,我们都会,但是具体经历哪些步骤,我们都清楚嘛?打开VC,新建一个文件,编写完后,F5运行,这就是所有的步骤?VC把太多的底层实现封装了,使你几乎不用关心底层的操作。而Linux中,一览无余。

总的来说,简单流程如下:

编辑 -> 编译 -> 链接 -> 运行。

首先,当然是要编辑源文件,用什么编辑器?VI,对,就是它,Windows下也不乏它的身影,跨平台的优秀编辑软件,扯远一点,“这个世界上有三种程序员,一种用VIM (VI升级版),一种用Emacs的,还有一种用其他”。足见VIM在编辑器领域的地位。关于VIM更详细的讨论可以上网搜索。不论如何,我们可以使用“vi hello.c”来新建或修改一个叫hello.c的文件。

接着,你需要一个编译器来编译,在Linux下,最著名的编译器便是gcc,它能编译c、c++、object c等多种语言。gcc 的具体使用请man 之,但是我说几个简单的用法,-c 参数使得gcc只执行编译(默认会编译后自动链接),-o 参数可以知道生成文件的名称,gcc 后可接多个文件参数来组合编译(就像这样:gcc hello.c fun.c –o hello)这样就可以处理文件的包含关系了。

值得一提的是,我在使用gcc的过程中,发现它并不能直接编译cpp文件。查看其man page 以后才明白,gcc 是不会自动去链接stl 库的,必须安装一个g++ 的程序来调用stl 库给gcc 编译,这点我不是太确定,请指正(英文不好,怕误解)。其原文如下:

"However, the use of gcc does not add the C++ library.  g++ is a program that calls GCC and treats .c, .h and .i files as C++ source files instead of C source"

大约在manual page gcc(1) 的 570 行左右。

但是,光有gcc是不够的,倘若你需要编译一个有几十上百个文件的工程呢?难不成写一个脚本来运行?其实我们有更好的选择,使用Makefile 组织代码,并用make命令解析 Makefile文件的内容,完成编译工作。随便在网上查找一下,你会发现Makefile的功能非常强大,它可以设置文件的依赖,可以配置工程的不同编译模式,可以调用任何你想调用的外部程序,等等。因为Makefile的方便和扩展性,被广泛用于各类开源工程中。

下面提供一个简单的Makefile例子,如下:

all: hello.o fun4hello.o

        g++ hello.o fun4hello.o

hello.o: hello.cpp

        g++ -c hello.cpp

fun4hello.o: fun4hello.cpp

        g++ -c fun4hello.cpp

Makefile使用的是声明各个文件的依赖关系,冒号前面是标记,也是make命令将检测的文件名(若被修改或不存在,将重新执行该条命令,如hello.o 若被修改,make命令将重新执行hello.o对应的 g++ -c hello.cpp 命令),另外,all和clean 被赋予了特殊意义,不代表文件名。再另外,你其实也可以写成以下形式:

all: hello

hello: hello.o fun4hello.o

        g++ hello.o fun4hello.o –o hello

hello.o: hello.cpp

        g++ -c hello.cpp

fun4hello.o: fun4hello.cpp

        g++ -c fun4hello.cpp

这样,你又可以检测最后的生成文件hello 是否需要重新生成了。

请注意,冒号前面的内容是可以任意替换的,它之代表一个标签及需要检测的文件名,与对应命令生成的文件没有关系。也就是说,如果你不使用生成文件的文件名,那此条语句将每次都被执行,因为make命令发现需要检查的文件不存在。

关于Makefile的具体使用,我也不是很清楚,毕竟这只是个课程的总结,可以查阅相关资料,嘿嘿。

PS:命令 touch filename 可以使 filename 的状态变成被修改,非常形象~

OK,今天了解到的 Linux系统的简单编程大概就这些内容了。下节预告:“Linux 内核定制”,敬请期待~~

原文链接: https://www.cnblogs.com/tankery/archive/2011/02/22/2004564.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Linux初步(二)——Linux 简单编程

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/21367

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午11:22
下一篇 2023年2月7日 下午11:23

相关推荐