文章内容是对嵌入式软件项目从编码到发布总体步骤的简要介绍,看起来实际意义不大,但可以给程序员同仁提供一个整体视角,给我们排查解决代码编译bug提供方向。
一个应用软件,从源代码到最后的可执行文件,中间经历了如下几个过程:
中间过程会有反复,但总体流程如此。
在这个过程中,需要用到编辑器、文件管理器、编译器、调试器和打包工具(可选),对于大型工程,还要用到CMAKE(或类似工具)作为自动生成Makefile的辅助工具。
最原始的编写应用软件的工具——编辑器(editor)、编译器(compiler)和调试器(debugger)是分离的,所以在编译和调试代码时,需要编写额外的makefile文件,并在shell中调用编译命令进行操作。目前,在linux应用程序开发中,不少人依然是使用这种分离方式(这都是高手)。
而在IDE中,它集成了编辑器、文件管理器、编译器、调试器,甚至是打包工具,并提供图形用户界面。我们只需要在功能界面中进行工程属性和编译、调试配置,点击编译、调试按钮,就可以进行操作,而makefile生成、编译器和调试器调用是自动完成的。
IDE方便了程序员的软件开发,但也隐藏了软件从编码到发布的过程细节,容易导致程序员知其然不知其所以然。缺乏对细节的把控,在一定程度上阻碍了我们修炼成高手。
软件运行,除了像汇编、C/C++编译成二进制代码,直接在CPU中运行的方式,还有一种是基于解释器运行的方式:
基于解释器运行,就是解释器对源代码边解释,CPU边运行,java和python是比较常用的基于解释器运行的程序语言,所以也就有java解释器(也叫虚拟机,JVM)和各种版本的python解释器(如CPython)。解释器将源代码就地解释成二进制字节流供CPU运行,所以这种解释型的程序运行需要有源代码本身、解释器、动态支持库,运行环境必须能支持解释器自身的运行。