📄 第四课 连 接.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0057)http://www.pdazone.com.cn/develop/CodeWarrior/Lesson4.htm -->
<HTML><HEAD><TITLE>PDA开发</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=Content-Language content=zh-cn>
<STYLE type=text/css>.font {
FONT-SIZE: 10pt; LINE-HEIGHT: 13pt
}
.fontlittle {
FONT-SIZE: 9pt
}
A {
TEXT-TRANSFORM: none; TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2462.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=650 border=0>
<TBODY>
<TR align=middle>
<TD align=right width="100%"><IMG height=35
src="第四课 连 接.files/develop.gif" width=648 border=0> </TD></TR>
<TR align=middle>
<TD align=right width="100%"></TD></TR>
<TR align=middle>
<TD width="100%"><IMG height=5 src="" width=2 border=0> </TD></TR>
<TR align=middle>
<TD class=font width="100%">
<P align=left>><A href="http://www.pdazone.com.cn/"
target=_parent>首页</A>>PDA开发 </P></TD></TR>
<TR align=middle>
<TD width="100%"><IMG height=5 src="" width=2 border=0> </TD></TR>
<TR align=middle>
<TD width="100%">
<P align=center><SMALL>CodeWarrior 使用教程</SMALL></P></TD></TR>
<TR>
<TD width="100%">
<P align=center><FONT size=3><B>第四课</B><FONT
face="Arial, Helvetica, sans-serif">
</FONT><STRONG>连</STRONG> <STRONG>接</STRONG></FONT></P></TD></TR>
<TR align=middle>
<TD class=font width="100%">
<P align=center>Translated from <STRONG><FONT
face=Arial>CodeWarriorU.COM</FONT></STRONG></P>
<P align=center><BR></P></TD></TR>
<TR>
<TD width="100%">
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="88%" border=0>
<TBODY>
<TR>
<TD class=font width="100%"><STRONG><FONT face=幼圆 color=#000000
size=3>第二步:连接程序各部件</FONT></STRONG><BR>
<P><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>MSL
</FONT><FONT size=2>库函数中的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>printf() </FONT><FONT
size=2>(该函数用来实现功能强大的控制台输入/输出)来替换你在源文件中使用的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>printf() </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>(DLL)</FONT><FONT
size=2>。这样,该应用程序仍然可以访问到这些代码,但是它就需要弄明白应该到哪个文件以及如何找到这些它需要使用的函数。这种情况,就需要做一些连接的工作了。</FONT></P>
<P><FONT face=幼圆 size=+1><B>连接的类型</B></FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>在程序的编制中,一个连接就是一个指针,指向一个象编译函数这样的对象,或者指向一个变量或一个数组这样的数据内容。连接有两种方式:硬连接(hard
linking)和软连接(soft linking)。 </FONT></P>
<P><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>(</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>DLL
</FONT><FONT size=2>中,并在运行时可以从该 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>DLL </FONT><FONT
size=2>中进行调用。在这种情况下,连接器会告诉应用程序到哪里去找它所需要的代码。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>软连接也是计算机操作系统中许多元素使用的方法。接下来,我们一起来学习一些关于连接器的选项设置。</FONT></P>
<P><B><B><FONT face="Arial, Helvetica, sans-serif" color=#000000
size=3>A </FONT><FONT color=#000000 size=3>连接</FONT><FONT
face="Arial, Helvetica, sans-serif" color=#000000 size=3>Detailed
Look at Linking</B></B><BR></FONT><BR></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>为了将来能更好地领略
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>CodeWarrior
for Windows </FONT><FONT size=2>平台的卓越功能,你首先需要了解如何配置 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>CodeWarrior </FONT><FONT
size=2>的连接器来满足你的要求。</FONT></P>
<P><FONT face=幼圆 size=+1><B>根据你的要求来配置连接器</B></FONT></P>
<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> CodeWarrior
</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>4-1)</FONT><FONT size=2>。但是在这其中使用的很多术语也是适用于其它平台上的
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>CodeWarrior
</FONT><FONT size=2>连接器的。</FONT></P><FONT
face="Arial, Helvetica, sans-serif" size=2>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY></FONT>
<TR>
<TD><FONT size=2><IMG height=421
alt="Figure. 4-1 The x86 linker settings window."
src="第四课 连 接.files/icwwL4_fig1.gif" width=627 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>4-1 x86
</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>(</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>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>)</FONT><FONT
size=2>标签。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>下面我们来看看一些连接器设置项:</FONT>
<UL>
<LI><B><FONT size=2>入口点用法</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(Entry Point
Usage):</B> </FONT><FONT size=2>在 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Windows OS </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>DLL )</FONT><FONT size=2>的类型和其它的一些因素。当一个应用程序需要调用一个
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>DLL
</FONT><FONT size=2>函数时,主机操作系统就使用这个入口点信息来正确地调用该 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>DLL </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>4-1</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>CodeWarrior </FONT><FONT
size=2>根据你在目标文件设置面板中选择的目标文件类型,来自动地为输出文件设置正确的入口点;</FONT>
<LI><B><FONT size=2>子系统</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(Subsystem):
</FONT></B><FONT size=2>子系统有三种选择:</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Native</FONT><FONT
size=2>、 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Windows CUI </FONT><FONT size=2>和 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Windows GUI</FONT><FONT
size=2>。</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Native </FONT><FONT size=2>选项是用于开发驱动程序和其它异种系统模块的;
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>Windows
CUI </FONT><FONT size=2>选项是用于开发使用控制台风格用户界面</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>( console-style user
interface</FONT><FONT size=2>,所谓的</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>CUI )</FONT><FONT
size=2>的应用程序的;</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Windows GUI </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>(Windows graphic user interface</FONT><FONT size=2>,所谓的
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>GUI
)</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>CUI </FONT><FONT
size=2>子系统。通常情况下,</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>CodeWarrior </FONT><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -