第四課連接_第1頁
第四課連接_第2頁
第四課連接_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、更多電子資料請登錄賽微電子網(wǎng)CodeWarrior 使用教程 第四課 連 接 Translated from CodeWarriorU.COM第二步:連接程序各部件 當(dāng)你的程序編譯完畢以后,接著就要使用連接器來把這些組成你的程序的各個文件連接起來。 連接器是用來組合各個源文件被編譯后得到編譯代碼的,同時還要將這些文件與它們所需要的庫連接在一起。連接確保了每片代碼都知道如何去找到你程序中的其它元素。例如,連接器修改機(jī)器代碼以便使用 MSL 庫函數(shù)中的 printf() (該函數(shù)用來實現(xiàn)功能強(qiáng)大的控制臺輸入/輸出)來替換你在源文件中使用的 printf() 函數(shù)調(diào)用。 當(dāng)你編寫一個程序時,常常將代

2、碼寫成函數(shù)并存放在不同的文件中,然后將這些文件編譯得到單個的輸出文件。就像我們在前面使用的 Hello World 這個程序,它的輸出文件是一個應(yīng)用程序。但是在某些時候,同一個程序中使用的函數(shù)在輸出時不一定是存放在同一個輸出文件中的。例如,假設(shè)你編寫一個應(yīng)用程序時,其中包含了許多被程序的多個部分重復(fù)使用的代碼,你就可以將這些被重復(fù)使用的代碼編譯成為一個可共享的動態(tài)鏈接庫(DLL)。這樣,該應(yīng)用程序仍然可以訪問到這些代碼,但是它就需要弄明白應(yīng)該到哪個文件以及如何找到這些它需要使用的函數(shù)。這種情況,就需要做一些連接的工作了。連接的類型 在程序的編制中,一個連接就是一個指針,指向一個象編譯函數(shù)這樣的

3、對象,或者指向一個變量或一個數(shù)組這樣的數(shù)據(jù)內(nèi)容。連接有兩種方式:硬連接(hard linking)和軟連接(soft linking)。 硬連接發(fā)生于連接過程中,說明代碼的時候。換句話說,如果一個函數(shù)被使用了,在連接時連接器確切地知道這個函數(shù)在哪里并創(chuàng)建一個連接把這個函數(shù)連接起來。 軟連接(也稱為弱連接)發(fā)生于進(jìn)行連接時,一些代碼可以不需要進(jìn)行說明,因為你知道這些代碼位于一個 DLL 中,并在運行時可以從該 DLL 中進(jìn)行調(diào)用。在這種情況下,連接器會告訴應(yīng)用程序到哪里去找它所需要的代碼。 軟連接也是計算機(jī)操作系統(tǒng)中許多元素使用的方法。接下來,我們一起來學(xué)習(xí)一些關(guān)于連接器的選項設(shè)置。A 連接De

4、tailed Look at Linking 為了將來能更好地領(lǐng)略 CodeWarrior for Windows 平臺的卓越功能,你首先需要了解如何配置 CodeWarrior 的連接器來滿足你的要求。根據(jù)你的要求來配置連接器 本課中使用的示例是運行在 x86 平臺上的 CodeWarrior 的連接器設(shè)置面板(如圖4-1)。但是在這其中使用的很多術(shù)語也是適用于其它平臺上的 CodeWarrior 連接器的。圖 4-1 x86 連接器設(shè)置窗口 通過選擇編輯菜單中的“工程名”項來打開這個設(shè)置窗口。(“工程名”是指當(dāng)前的活動工程在本例中就是 Hello World x86),然后點擊設(shè)置窗口中的

5、 x86 連接器(或類似的名字)標(biāo)簽。 下面我們來看看一些連接器設(shè)置項: 入口點用法(Entry Point Usage): 在 Windows OS 體系中,每一個代碼模塊都有許多可能可以或者不可以選擇的入口點,這取決于你所編譯的代碼類型。這些入口點的自然屬性依賴于你正在編寫的程序的輸出文件(應(yīng)用程序、庫或 DLL )的類型和其它的一些因素。當(dāng)一個應(yīng)用程序需要調(diào)用一個 DLL 函數(shù)時,主機(jī)操作系統(tǒng)就使用這個入口點信息來正確地調(diào)用該 DLL 地初始化函數(shù)。大多數(shù)情況下,你應(yīng)當(dāng)設(shè)置此選項為默認(rèn)方式(如圖4-1所示)。這將讓 CodeWarrior 根據(jù)你在目標(biāo)文件設(shè)置面板中選擇的目標(biāo)文件類型,來

6、自動地為輸出文件設(shè)置正確的入口點; 子系統(tǒng)(Subsystem): 子系統(tǒng)有三種選擇:Native、 Windows CUI 和 Windows GUI。Native 選項是用于開發(fā)驅(qū)動程序和其它異種系統(tǒng)模塊的; Windows CUI 選項是用于開發(fā)使用控制臺風(fēng)格用戶界面( console-style user interface,所謂的CUI )的應(yīng)用程序的;Windows GUI 選項用于開發(fā)使用 Windows 圖形用戶界面(Windows graphic user interface,所謂的 GUI )的應(yīng)用程序的。因為我們是用的示例程序是簡單的基于控制臺的 Windows 應(yīng)用程序

7、,所以我們選擇了 CUI 子系統(tǒng)。通常情況下,CodeWarrior 會根據(jù)你在開始創(chuàng)建工程時選擇的工程模板來自動地設(shè)置子系統(tǒng)的選項; 子系統(tǒng) ID/用戶 ID(Subsystem ID/UserID): 和子系統(tǒng)項一樣,這個選項也是由 CodeWarrior 自動設(shè)置的。具體系統(tǒng)對應(yīng)的 ID 為:Windows 3.1,Windows 95 和 Windows NT 3.5 的 ID 為 3.10,Windows NT 4 的 ID 為 4.00; 生成連接映射(Generate Link Map): 這個選項允許你生成一個文本文件,其中包含了程序中使用到的所有的類和函數(shù)的詳細(xì)信息。當(dāng)需要通

8、過匹配變量或函數(shù)名的地址來調(diào)試代碼時,這個選項就非常有用了; 生成 SYM 文件(Generate SYM File): 這個選項允許你在連接過程中生成一個符號文件。大多數(shù)的調(diào)試器在進(jìn)行調(diào)試時需要一個符號文件來逐步調(diào)試你的源代碼。我們將在第五課中詳細(xì)討論這個內(nèi)容。此外,你還可以通過選中生成 CV 信息項(Generate CV Info item)來生成一個可用于 CodeView 的符號文件。CodeView 是一個流行的 Windows 調(diào)試工具; 生成 CV 信息(Generate CV Info): 生成一個可用于 CodeView 的符號文件。CodeView 是一個流行的 Windows 調(diào)試工具; 命令文件(Command File): 這個選項要你選擇一個用于指示復(fù)雜的連接選項設(shè)置的文本文件。該文件稱為連接器命令文件。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論