1。前言:我对linux环境的一点认知
初学嵌入式linux,对于整个环境的认知,以及整个环境的操作非常重要。平时编程都是在集成开发环境下进行,比如VC6.0,写完代码后,直接按钮单击“编译”,点击”运行”,均是界面化操作。但各位开发程序猿们是否想过这集成开发环境的“编译”和“运行”是如何进行的?又是怎样一个过程?集成开发环境确实方便,直接通过按钮的点点就完成了想要的操作,但隐藏了内在的运行逻辑。
而linux下开发,就能让你的视野更有深度,整个过程没有集成开发环境,自己编辑代码,自己写编译过程,自己去运行,不再是通过按钮点点就能完成,你开发的过程就是个集成环境。因此linux下的开发,你能更有深度的去了解开发到运行的内在机理。
下面,笔者就跟的大家一起学习嵌入式Linux学习第一步——熟悉Linux开发环境,输出我的第一个字你好!
2。了解编译过程
通常情况所说的“编译”,编译的过程流程如下:
<强> C程序源文件(C) 强> - - - - -预处理——》<强>(我文件)强>——编译- - -》<强>汇编文件(s) 强> - - -汇编——》<强>目标文件(. o) 强> - - -链接- - - - - -》<>强(可执行文件)强>
可执行文件可以直接被运行的文件,对于嵌入式Linux开发,可执行文件还需要转换成二进制文件(。本),才能烧写到控制器中。下面针对这个过程进行开发,在Linux下输出:
myhello词开始!
2.摄氏度程序源文件编辑
<代码>编辑环境:窗户 编辑器:源洞察力代码>
编写源程序,不管什么系统下,只要在任何一个代码编辑器中,都可以编写。这里选择在Windows的来源了解编辑器里写代码比较方便些。
<人力资源/>-
<李>建立一个myhello.c源文件李>
-
<李>对myhello.c源文件进行代码编写,并保存.main为函数入口,为了更深入了解编译文件之间联系,加入了HelloFunction()函数调用,然后再创立一个头文件和源文件来声明和定义HelloFunction()函数。
李>
<代码> # include“stdio . h” # include“HelloPrint.h” int main () { printf("开始\ n”); HelloFunction (); 返回0; } 代码>
3。同理,创立一个HelloPrint.c源文件,来定义HelloFunction()函数。
<代码> # include“stdio . h” # include“HelloPrint.h” 空白HelloFunction () { printf (" myhello词! \ n”); } 代码>
4。同理,创立一个HelloPrint头文件HelloPrint.h,来声明HelloFunction()函数。
<代码>的ifndef __HelloPrint_H #定义__HelloPrint_H 空白HelloFunction(无效); # endif 代码>
2。自己写编译过程,makefile文件
makefile文件是整个编译过程的一个集合文件,事先将程序源文件的编译过程写到makefile文件里,以后只要在命令行下输入让命令,系统自动执行makefile文件里内容,<强>方便操作>强。同时,makefile会自动根据目标文件是否改动,依赖文件是否更新,选择是否要编译,这样对于大量的程序文件来说,可以<强>减少编译时间强> .makefile文件编写有具体规则形式,网上也有很多这方面资料。
<人力资源/>makefile文件内容如下。其中你好文件是最终要生成的可执行文件,myhello。c和HelloPrint。c是编译原材料,采用gcc编译工具。
<代码>你好:myhello。c HelloPrint.c gcc - o你好myhello。c HelloPrint.c 清洁: rm你好代码>
3. linux下完成编译,运行
上面编写代码都是在Windows下完成,当然在Linux下也可以编写,但Windows下写方便些。写完以上代码和makefile文件后,需要上传上到虚拟机的Linux中。
<代码>上传工具:一种上传软件(也可以用虚拟机里的VMware工具工具拉拽文件) SSH远程登录工具:SecureCRT(登录到linux服务器,在Windows下的SecureCRT软件里即可完成命令行操作),也可以直接在linux的终端操作命令行。嵌入式linux开发环境熟悉——第一个你好的话