📄 显示和定制工程和目标文件(1).htm
字号:
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>如图</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>2-2</FONT><FONT size=2>显示</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>)</FONT><FONT
size=2>、链接顺序标签页和目标文件标签页</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>后两个标签页将在后续课程中讲述</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>)</FONT><FONT
size=2>。在这几个标签页的上方,有一个用于选择要编译的目标文件的下拉菜单。在本例中,我们选择的是 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Hello World </FONT><FONT
size=2>工程的调试版本。在下拉菜单的右边有几个图标,它们的存在允许你不必使用菜单命令就可以方便地编译、链接和运行这个工程。</FONT></P>
<BLOCKQUOTE>
<P><B><FONT size=2>注意</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>:</FONT></B> <FONT
size=2>在某些版本的 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>CodeWarrior </FONT><FONT size=2>中,链接标签被称为段</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(segments)</FONT><FONT
size=2>标签。有些人可能在某些 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>X86 </FONT><FONT
size=2>的处理器上编程时使用的是分段</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(segmented)</FONT><FONT
size=2>代码。但使用 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Windows </FONT><FONT size=2>版的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>CodeWarrior
</FONT><FONT size=2>工具时就不是这样,这是产生的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>X86 </FONT><FONT
size=2>代码使用的是</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>"</FONT><FONT size=2>扁平的</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>"(flat)</FONT><FONT
size=2>,或者叫做非分段的</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>(unsegmented) </FONT><FONT
size=2>内存空间。</FONT></P></BLOCKQUOTE>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>顾名思义,文件标签页列出了在工程中所有可能用到的文件。你可以通过创建一些组</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>用文件夹图标表示</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>)</FONT><FONT
size=2>来分门别类地管理这些文件,并可以帮助你方便地了解哪些文件将被使用。在本例中,我们将 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>C </FONT><FONT
size=2>程序</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>(</FONT><FONT size=2>以</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>.c</FONT><FONT
size=2>为后缀名的文件</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>)</FONT><FONT size=2>全都放到一个叫做 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Source </FONT><FONT
size=2>的组中,同时将库文件放到另一个组中,以便整洁明了地管理这些文件。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>在 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Sources </FONT><FONT
size=2>组中有一个 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>main.c </FONT><FONT size=2>文件。因为我们还没有编译这个工程,所以在每个文件对应的
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>Code
</FONT><FONT size=2>和 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Data </FONT><FONT
size=2>栏中显示数字的都是零。一旦我们编译了这个工程,这些数字就将显示出来,表示源码转换为机器代码后实际的代码量和数据量。可是,库文件
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>ANSICX86.LIB
</FONT><FONT size=2>和 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>MWCRTL.LIB </FONT><FONT
size=2>后面显示的是 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>n/a </FONT><FONT size=2>。这表示索虽然这些文件被显示在这里,但是它们并不是
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>Hello World
</FONT><FONT size=2>目标文件的一部分。这两个文件是用于不可调试</FONT><FONT
face="Arial, Helvetica, sans-serif"
size=2>(non-debugging)</FONT><FONT
size=2>开发的,而本例不是这种情况。如果我们从菜单中修改本例的目标文件为 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Release(</FONT><FONT
size=2>发布</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>)
</FONT><FONT size=2>版本时,这两个文件就用得上了。这时这些文件后面的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Code </FONT><FONT
size=2>和 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Data </FONT><FONT size=2>栏目就会显示相应的数值。</FONT></P>
<BLOCKQUOTE>
<P><B><FONT size=2>注意</FONT></B> <FONT
face="Arial, Helvetica, sans-serif" size=2>: </FONT><FONT size=2>在
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>Data
</FONT><FONT size=2>和 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Code </FONT><FONT
size=2>栏右端的 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Target </FONT><FONT
size=2>栏目中的小子弹头也是用来表示该文件是否被当前编译生成的目标文件使用到。</FONT></P></BLOCKQUOTE>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>再往右边去,是 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Debug </FONT><FONT
size=2>栏</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>(</FONT><FONT size=2>用一个绿色的小虫子表示</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>)</FONT><FONT
size=2>,它是用于告诉你对应的文件在编译时是否要产生调试信息。我们将在第五课中详细论述这部分内容。最后,我们来看看在每一行最右端的弹出菜单,它是用于打开文件、更新源码、打开包含的头文件等等操作的快捷方式,具体是什么才作,要看它所代表的项目的类型而定。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>现在让我们来编译这个
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>Hello World
</FONT><FONT size=2>工程并看看编译后的工程窗口的情况。我们从 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Project </FONT><FONT
size=2>菜单中选择 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Make </FONT><FONT
size=2>命令来编译该工程。这将更新所有需要编译的文件并产生相应的输出文件——在本例中是 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Hello World </FONT><FONT
size=2>这个应用程序。</FONT></P>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 border=0><FONT
face="Arial, Helvetica, sans-serif" size=2>
<TBODY></FONT>
<TR>
<TD>
<P align=center><FONT size=2><IMG height=350
alt="Figure 2-3: When you build a project, the Code and Data items for each column are filled in."
src="显示和定制工程和目标文件(1).files/IcwwL2_Fig3.gif" width=405
align=left> </FONT></P></TD></TR>
<TR>
<TD align=middle>
<P align=center><I><FONT size=1>图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=1>2-3: </FONT><FONT
size=1>编译工程后的工程窗口的显示情况</FONT></I><FONT size=2>
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>从图</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>2-3</FONT><FONT
size=2>中我们可以看到,工程窗口发生了一些变化。</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Code </FONT><FONT
size=2>和 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Data </FONT><FONT
size=2>栏都显示了当前工程中对应项的相应的数字。如果你打算看看编译前后存放这些文件的目录的话,你会发现编译后在该目录下产生了一些新的文件,如图</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>2-4</FONT><FONT
size=2>所示。</FONT></P>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 border=0><FONT
face="Arial, Helvetica, sans-serif" size=2>
<TBODY></FONT>
<TR>
<TD><FONT size=2><IMG height=203
alt="Figure 2-4: Building a project generates new files within your project folder."
src="显示和定制工程和目标文件(1).files/IcwwL2_Fig4.gif" width=388
align=left> </FONT></TD></TR>
<TR>
<TD align=middle>
<P align=center><I><FONT size=1>图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=1>2-4: </FONT><FONT
size=1>编译后将在工程目录中产生一些新的文件</FONT></I></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>在本例中,编译工程后在工程目录中产生了一个新的文件。这就是 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>X86 </FONT><FONT
size=2>目标文件输出——生成一个叫做 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Hello World x86
</FONT><FONT size=2>的应用程序。其它一些一直存在于这个目录中的文件是: </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>.mcp </FONT><FONT
size=2>文件—工程文件本省,以及 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>.c </FONT><FONT size=2>源文件—包含了应用程序源码的文件。</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Hello World Data
</FONT><FONT size=2>目录中还包含了由 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>CodwWarrior </FONT><FONT
size=2>生成的各种各样的支持文件。现在你还不必去关心这些文件。如果你正在编译目标文件的调试版本,你会看到更多的文件被产生出来,这些文件中可能包含着符号</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(symbolic)</FONT><FONT
size=2>调试信息。集成开发环境的调试器使用这些符号信息来记录在高层次源码中的操作轨迹。我们将在第五课中详细讲述这方面内容。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>现在你已经了解了这些文件是如何结合在一起被编译生成一个目标文件的。让我们来运行这个目标文件并看看它的运行结果是什么样。你双击
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>Hello World
x86 </FONT><FONT size=2>应用程序,就会有如图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>2-5</FONT><FONT
size=2>所示的结果显示出来。</FONT></P>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=345 border=0><FONT
face="Arial, Helvetica, sans-serif" size=2>
<TBODY></FONT>
<TR>
<TD width=345><FONT size=2><IMG height=215
alt='Figure 2-5: When you run the Hello World program, a window containing the words "Hello World" appears on screen.'
src="显示和定制工程和目标文件(1).files/IcwwL2_Fig5.gif" width=324
align=left> </FONT></TD></TR>
<TR>
<TD align=middle width=345>
<P align=center><I><FONT size=1>图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=1>2-5: Hello World
</FONT><FONT size=1>应用程序的运行结果</FONT></I><FONT size=2>
</FONT></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face=幼圆 size=+1><B>你来试试看</B></FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -