CodeWarrior使用教程第二部分: 工程和目标文件的显示和定制

什么是工程文件

    为了使用 CodeWarrior 来创建一个应用程序,你必须创建许多文件来构成一个工程(Project)。该工程的设置和所有这些文件的指针都被存放在一个工程文件中。这些设置包括编译和链接设置、源文件、库文件以及它们之间用于产生最终程序的相互关系。你可以将这个工程文件看作该工程的大脑:它保存了所有文件相互依存的关系并知道如何将它们组合成为一个可用的应用程序。工程窗口依次显示了这些关于你的程序和该程序所包含的文件的信息,并允许你只需轻松点击就可以修改这个工程。图2-1显示了工程窗口的外观。

       图 2-1: 显示工程信息的工程窗口(图示为空的情况)

大多数组成你的程序的文件都是原始的文本文件。这些文件包含了你在 CodeWarrior 的编辑器中键入的源代码。在某些情况下,你还将使用一些预编译的源码和头文件。在进行数学运算和 I/O 操作时,你还要使用到一些库文件,比如 Metrowerks 标准库(Metrowerks Standard Library,MSL)

    通常,你都是使用 C 或 C++ 来编写源代码,但通过给 CodewWarrior 的集成开发环境加装相应的插件(plug-in),你也可以在 CodeWarrior 中使用其它语言来进行编程。别忘了,CodeWarrior 可是一个可扩展的集成开发环境。通过给它安装一些插件,你就可以扩展它的功能。比如说,加入有人开发了一种新的叫做 Z++ 的编程语言,你就可以为 CodeWarrior 创建一个相应的插件使之能够支持 Z++ 语言,而且你还可以拿这个插件卖好多钱,让所有使用 CodeWarrior 编程的人都使上 Z++ 语言。那该多好!:)

    现在你知道了 CodeWarrior 是如何使用文件的了。下面我们来详细地学习有关工程窗口的知识。

工程窗口

    当你启动 CodeWarrior 并打开或创建一个工程时,工程窗口就会显示出来。该窗口用于管理整个工程的所有文件以及这个工程将要产生的目标(targets)文件。一个工程包含了足够的信息来编译一个或多个目标文件。所谓的目标(target)文件就是当你编译程序时,由 CodeWariior 创建出来的(通常是)一个应用程序或库文件。一些程序可以编译产生多个目标文件。比如,你可以编写一个程序来创建一个 DLL 和一个调用该 DLL 的主应用程序。在 CodeWarrior 的工程中,你可以定义一个目标来产生 DLL,定义另一个目标来产生应用程序。通过这种方式,你的工程只需编译一次就可产生所有需要的目标文件或片断。图 2-2 显示了“Hello World”程序的工程窗口。

图 2-2: Hello World 程序的工程窗口(其中显示了所有包含于该程序中或用于编译该程序的文件)

你可以看到,在这个工程窗口中确实包含了一些项目。在窗口的顶端有三个标签(tab)页:文件标签(如图2-2显示)、链接顺序标签页和目标文件标签页(后两个标签页将在后续课程中讲述)。在这几个标签页的上方,有一个用于选择要编译的目标文件的下拉菜单。在本例中,我们选择的是 Hello World 工程的调试版本。在下拉菜单的右边有几个图标,它们的存在允许你不必使用菜单命令就可以方便地编译、链接和运行这个工程。


注意: 在某些版本的 CodeWarrior 中,链接标签被称为段(segments)标签。有些人可能在某些 X86 的处理器上编程时使用的是分段(segmented)代码。但使用 Windows 版的 CodeWarrior 工具时就不是这样,这是产生的 X86 代码使用的是"扁平的"(flat),或者叫做非分段的(unsegmented) 内存空间。

    顾名思义,文件标签页列出了在工程中所有可能用到的文件。你可以通过创建一些组(用文件夹图标表示)来分门别类地管理这些文件,并可以帮助你方便地了解哪些文件将被使用。在本例中,我们将 C 程序(以.c为后缀名的文件)全都放到一个叫做 Source 的组中,同时将库文件放到另一个组中,以便整洁明了地管理这些文件。

    在 Sources 组中有一个 main.c 文件。因为我们还没有编译这个工程,所以在每个文件对应的 Code 和 Data 栏中显示数字的都是零。一旦我们编译了这个工程,这些数字就将显示出来,表示源码转换为机器代码后实际的代码量和数据量。可是,库文件 ANSICX86.LIB 和 MWCRTL.LIB 后面显示的是 n/a 。这表示索虽然这些文件被显示在这里,但是它们并不是 Hello World 目标文件的一部分。这两个文件是用于不可调试(non-debugging)开发的,而本例不是这种情况。如果我们从菜单中修改本例的目标文件为 Release(发布) 版本时,这两个文件就用得上了。这时这些文件后面的 Code 和 Data 栏目就会显示相应的数值。


注意 : 在 Data 和 Code 栏右端的 Target 栏目中的小子弹头也是用来表示该文件是否被当前编译生成的目标文件使用到。

    再往右边去,是 Debug 栏(用一个绿色的小虫子表示),它是用于告诉你对应的文件在编译时是否要产生调试信息。我们将在第五课中详细论述这部分内容。最后,我们来看看在每一行最右端的弹出菜单,它是用于打开文件、更新源码、打开包含的头文件等等操作的快捷方式,具体是什么才作,要看它所代表的项目的类型而定。

    现在让我们来编译这个 Hello World 工程并看看编译后的工程窗口的情况。我们从 Project 菜单中选择 Make 命令来编译该工程。这将更新所有需要编译的文件并产生相应的输出文件——在本例中是 Hello World 这个应用程序。

                              图 2-3: 编译工程后的工程窗口的显示情况

从图2-3中我们可以看到,工程窗口发生了一些变化。Code 和 Data 栏都显示了当前工程中对应项的相应的数字。如果你打算看看编译前后存放这些文件的目录的话,你会发现编译后在该目录下产生了一些新的文件,如图2-4所示。

                                图 2-4: 编译后将在工程目录中产生一些新的文件

在本例中,编译工程后在工程目录中产生了一个新的文件。这就是 X86 目标文件输出——生成一个叫做 Hello World x86 的应用程序。其它一些一直存在于这个目录中的文件是: .mcp 文件—工程文件本省,以及 .c 源文件—包含了应用程序源码的文件。Hello World Data 目录中还包含了由 CodwWarrior 生成的各种各样的支持文件。现在你还不必去关心这些文件。如果你正在编译目标文件的调试版本,你会看到更多的文件被产生出来,这些文件中可能包含着符号(symbolic)调试信息。集成开发环境的调试器使用这些符号信息来记录在高层次源码中的操作轨迹。我们将在第五课中详细讲述这方面内容。

    现在你已经了解了这些文件是如何结合在一起被编译生成一个目标文件的。让我们来运行这个目标文件并看看它的运行结果是什么样。你双击 Hello World x86 应用程序,就会有如图 2-5所示的结果显示出来。

                                       图 2-5: Hello World 应用程序的运行结果

你来试试看

    总有一天,你自己也能编写出象 Hello World 这样充满激情和意义深远的程序来。这是完全有可能的。只要你有决心努力工作,学完本课你就可以编写这个程序了。下面我们给出该程序的源代码:


#include
void main(void) {
   int c;
   printf("Hello World on Windows!\n");
   c = getchar();
}

    就这么多!你没想到会这么简单吧?你可以试试看将 "Hello World on Windows!" 这句话换成一句别的什么内容。要不了多久,你就能自己编写一些不仅能显示文本而且还能执行你指定的其它任务的应用程序了。但在此之前,你还需要学习第四课,有关链接的知识。

关于getchar()函数

    那些有经验的 C 程序员可能会问,上述代码中使用的 字符输入函数 getchar() 用在这里是什么意思。通常地,当一个应用程序执行完毕后,它就会终止,然后操作系统就会立即清除该应用程序输出。这样,当上述应用程序显示完“Hello World on Windows!”后,为了避免系统立即将该程序地输出清除,我们在程序中添加了一个 getchar() 函数,使程序在此处暂停,直到有键盘输入时整个程序会终止。这样我们才有足够的时间来看清楚该程序的输出。

    这是一个正常的操作,而不是一个 bug。实际上,CodeWarrior 也提供了一个适用于此处的库函数,这个库函数中的 C 控制台 I/O 函数步不仅可以在程序显示完毕后锁定应用程序,而且还可以让你将输出的文本信息存储到一个文件中去。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: CodeWarrior是一种集成开发环境(IDE),主要用于嵌入式系统开发,可提高开发效率和可靠性。下面是一些使用CodeWarrior的教程: 1.安装CodeWarrior:首先需要从官方网站下载CodeWarrior,然后按照向导安装。这个过程很简单,只需要按照指示进行就可以了。 2.创建项目:打开CodeWarrior后,你会看到一个欢迎界面。点击新建项目,然后选择你要开发的平台,输入项目的名称和存储路径。CodeWarrior提供了各种处理器的采用系统和支持。选择适当的选项后,按'test project'开始新的测试项目。 3.编写代码:编写代码是主要的工作。点击CodeWarrior界面的源代码窗口,然后使用自己喜欢的编程语言定义函数和变量并编写其代码。 4.调试程序:CodeWarrior提供了各种调试工具和方式。在调试过程中,你可以查看变量的值、检查代码的执行流程、停止并单步运行程序等。 5.生成可执行文件:当你的程序完成后,需要将代码出口保存到可执行文件中。CodeWarrior可以为你生成各种类型的可执行文件,如二进制可执行文件、库文件等。选择适当的输出选项,然后构建程序以生成最终的可执行文件。 总之,CodeWarrior是一款功能强大的IDE,可以显著提高嵌入式开发的效率和可靠性。只要按照上述步骤进行,你就可以轻松创建项目、编写代码和调试程序,最终生成可执行文件并将其部署到目标设备上。 ### 回答2: Codewarrior是一款功能强大的集成开发环境,用于嵌入式系统的开发,采用了易于使用的GUI界面,帮助开发者更快速地实现各种应用。Codewarrior的安装和使用都比较简单,只需按照以下步骤进行操作即可。 1.安装Codewarrior 首先需要从官方网站下载Codewarrior,并进行安装。安装完成后,会生成Codewarrior的快捷方式,可以通过双击打开。如果之前已经安装了Codewarrior,需要先将之前版本的卸载干净。 2.创建新项目和工程 打开Codewarrior后,需要创建新的项目和工程。在菜单栏中选择“File”->“New”->“Project”,然后选择需要使用的工具链和操作系统。在这里可以选择常用的MCU厂商和芯片,以及对应的SDK版本。 3.添加源文件 将需要编译运行的源文件导入该工程中,可以在菜单栏中选择“File”->“New”->“Source File”,或者右键点击工程选项,选择“New”->“Source File”来添加。 4.配置编译选项 配置编译选项可以在工程的属性窗口中进行,选择“Project”->“Properties”来打开工程属性页面。在这里可以选择编译器和调试器,并设置编译选项。 5.编写代码 在Codewarrior中编写代码和其他IDE是一样的,使用内置的编辑器即可。不过需要注意的是,Codewarrior使用的是ANSI C标准,使用非ANSI C标准的函数需要开启相应的编译选项。 6.编译和调试 所有配置完成后,可以开始编译和调试。编译可以选择菜单栏中的“Project”->“Build”,或者使用快捷键Ctrl+B来进行。调试可以选择“Debug”->“Debugger”->“Attach”,或者使用快捷键F5来启动。Codewarrior也提供了更加丰富的调试工具,用户可以根据需要使用。 以上是Codewarrior使用教程,希望能够提供一定的帮助。在使用过程中需要注意的是,多看官方文档和经验交流论坛,了解更多的使用技巧和注意事项,以提高开发效率和质量。 ### 回答3: Codewarrior是一款强大的集成开发环境(IDE),由美国Freescale公司推出,目前已被收购为尽力科技公司推广。它具备开发嵌入式系统所需的所有功能。Codewarrior支持大量的MCU系列,如:Freescale公司的ColdFire,Kinetis和HCS12,NXP Semiconductors公司的ARM Cortex-M,以及其他MCU系列,如AVR。在Codewarrior中,开发人员可以编写C/C++代码,并使用调试器、分析器、编译器和器件编程器来开发、测试和部署。 Codewarrior的主要功能和特点: 1. 支持多种MCU系列,可以在一个集成开发环境中开发多种嵌入式系统。 2. 提供了代码编辑器和高级调试器,用于快速开发和测试嵌入式系统。 3. 支持直接调试Bootloader,允许在Flash中下载并调试应用程序。 4. 提供器件编程器和时钟工具,可简化和自动化制造流程。 5. 支持代码版本控制和协作开发,允许多人协作开发同一项目。 下面是Codewarrior使用教程: 1. 下载和安装Codewarrior IDE。 2. 创建一个新项目,将MCU型号和其他项目设置设置为所需的编译器选项。 3. 创建和修改源代码文件,例如添加文件、修改文件名或移动文件。 4. 编写代码后,设置Debug Configuration。 5. 在Debug Configuration窗口中,添加断点以调试代码。 6. 运行程序并使用调试器查看调试输出。 7. 分析调试信息并修正代码错误。 8. 代码测试完成后,使用编译器和器件编程器将程序烧录到MCU中。 总的来说,Codewarrior是一款功能全面的IDE,提供了快速开发嵌入式系统所需的所有工具和资源。用户可以根据需要自定义设置,并使用Debug Configuration和其他工具来调试和分析代码。因此,如果你需要开发嵌入式系统,Codewarrior是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值