什么是程序的编译和链接
扫描二维码
随时随地手机看文章
KeilμVision4是Keil软件公司为8051系列微控制器及其兼容产品设计的集成式软件开发环境。μVision4集成了C51编译器和A51汇编器,其界面类似于Microsoft VS,支持C语言和汇编语言程序的编写和调试,功能强大。
2009年2月发布Keil uVision4,Keil uVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
将源程序加入工程后,必须生成可执行的目标文件,并将其下载到单片机的程序存储器中,该程序才能执行。而在这之前,必须保证程序没有基本的语法错误,如指令格式错误和变量重复定义等。在μVision4中,可以通过“编译(Translate)”查找程序中的语法错误,通过“生成目标文件(Build)”功能或“重建目标文件(Rebuild)”功能将没有语法错误的源程序转换为“HEX”格式的目标文件。需要特别强调的是,若没有编译错误的程序不能产
生预期的运行结果,则意味着程序中存在逻辑错误,此时可以利用μVision4的调试“Debug”功能查找和修正错误。
程序的编译和链接
1.程序的编译
可以通过鼠标左键单击快捷菜单中的“Translate”(见图7-13a)或“Project”→“Translate”子菜单(见图7-13d)进行源程序编译。若程序没有语法错误,则“Build Output”窗口的输出信息为:“test.c–0 Error(s),0 Warning(s)”,表示“test.c”文件中有0个警告(Warning)和0个错误(Error),如图7-14a所示。若程序中存在基本语法错误,软件会在“Build Output”窗口输出错误提示信息。如图7-14b所示,“test.c–1 Error(s),0Warning(s)”表示“test.c”文件中有0个警告(Warning)和1个错误(Error);错误提示信息“TEST.C(13):error C202:'j':undefined identifier”表示错误出现在“TEST.C”文件的第13行(若用鼠标单击错误提示信息,则在源程序窗口中对应行的行首会出现绿色箭头),“error C202”表示错误编号为C202,而C202号错误为“Undefined Identifier”,提示信息“‘j’:undefined identifier”表示变量j没有定义。由图7-14b所示源程序可以看出,出现这个错误的原因是,文件第10行的变量j定义语句前加上了注释符号“//”,成为注释信息;去掉注释符号“//”后再次编译,错误提示将消失。
图7-13程序编译链接的相关菜单
a)“Translate”编译快捷菜单b)“Build”链接快捷菜单
c)“Rebuild”重新编译链接快菜单d)“Project”菜单
需要注意,“Error(s)”错误将导致无法生成目标代码,“Warning(s)”警告是程序中不严重的小问题,不影响目标文件的生成。但是最好消除所有的警告,因为警告类的小问题可能会导致潜在的、不易发现的严重问题。另外,编译不能产生目标文件,若要生成目标文件,还需在编译的基础上进行链接操作。
图7-14编译链接相关菜单和界面
a)编译无错误的提示信息b)编译错误提示信息
2.程序的链接
单击“Build”快捷图标(见图7-13b)或“Project”→“Build”子菜单(见图7-13d),可以完成对源程序的编译和链接,并生成目标文件。单击“Rebuild”快捷图标(见图7-13c)或“Project”→“Rebuild”子菜单(见图7-13d)也可以完成编译链接操作。“Build”与“Rebuild”的区别是,“Build”仅编译链接新的源程序文件或源程序文件中被修改的部分,而“Rebuild”将重新编译链接源程序文件。