freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于armuclinux的嵌入式系統(tǒng)開發(fā)-閱讀頁

2025-06-25 15:21本頁面
  

【正文】 何聯(lián)系。在下一次介紹不 同平臺程序移植時可 以看到,預(yù)編譯有時非常有用。編譯應(yīng)該是最主要的一步,就是將源文件生成 CPU能識別的語言,一般是 后綴 為 .o的目標(biāo)文件,應(yīng)該說,此時的文件就已經(jīng)可以執(zhí)行了。你可以在你的程序里調(diào)用一個不存在的函數(shù),甚至都不用聲明,在編譯階段,很 多編譯器只是給個警告。(呵呵,夠弱智?。? (3) 鏈接:鏈接才是清帳的時候,以前在程序里用到的外部符號都要把真正的東西交出來 。編譯器會去找,需要注意的是,庫的指定需要注意順序。庫文件是由相應(yīng)的程序( linux下是 ar命 令)將需要被添加到庫里的目標(biāo)文件(該文件是編譯階段生成的)組織起來生成檔案文件 ,同時可以建立一個檢索,檢索內(nèi)容為所包含的目標(biāo)文件中定義的符號。 以上就是主要的步鄹,當(dāng)然除此之外,還有一些用于格式轉(zhuǎn)換的工具等。知 道編譯器的細(xì)節(jié)對于程序的開發(fā)和移植都是很有好處的。但是只是用到了皮毛,還有一個專用于宿主機(jī)模式的調(diào)試 工具 gdbserver,一直沒時間研究,希望用過的大俠多發(fā)些文章鋪路。 簡單程序的移植 研究程序移植的那兩周是最痛苦的兩周,沒有太多可以借鑒的東西,只能摸黑向前走,于 是更加堅定決心要整理些東西給后來的弟兄。 首先列出一些問題: (1) X86上運(yùn)行的程序能不能在 51單片機(jī)上運(yùn)行,為什么,有沒有可能,如果可以,應(yīng)該做 哪些工作才可以實現(xiàn)。 為什么可以移植程序,為什么要移植程序 ? 程序可以移植首先要感謝開發(fā)出高級語言的大牛們,記住,無論多么漂亮的代碼經(jīng)過編譯 以后都要變成 CPU可以識別的機(jī)器語言,而幾乎一千種 CPU說著一千種語言。每一個 CPU派出自己的翻譯――編譯器。(由此已經(jīng)可以看出編譯工具在程序移植中 的重要性)。(操作系統(tǒng)也是程序,也可以移植嘍)舉例:在 x86的 windows下用VC(或 TC, BC)編一個 c程序?qū)崿F(xiàn) i=i+1,絲毫不改就可以用 51的 C編譯器重新編譯并在51單片機(jī)上運(yùn)行 。 可以移植已有的程序還要感謝開放源代碼的弟兄,沒有這些 C文件和 H文件讓你重新編譯一 下,怎么在你的 CPU上跑?其實不止這些,后面還會看見開源組織的牛人專為程序可移 植性 所作的專門的工作。現(xiàn)成的東西為什么不要。(就像現(xiàn)在地上有個錢包也千萬別上去就揣自己兜里,說不定就是套)。我這里所說的可移植的程序應(yīng)該是維護(hù)比較好,比較成熟的源代碼(像我后面的所 說的 UCD- SNMP),目前的開放源代碼運(yùn)動決不僅僅是把自己的程序公開就行了,而是有了 一套成熟完整的版本控制, BUG報告和 PATCH提交流程。 什么時候可以考慮移植程序? 在基于嵌入式操作系統(tǒng)進(jìn)行開發(fā)時,具有一定規(guī)模的程序都 可以到網(wǎng)上查一查都沒有成熟 的源代碼可用。假設(shè)源代碼中只包括 C標(biāo)準(zhǔn)庫 ,那么該程序就可以跨操作系統(tǒng)去移植。只能找該操作系統(tǒng)支持的 類似的功能來實現(xiàn)。好在 uClinux和 linu x提供的應(yīng)用接口大部分還是相同的。 由上可知,如果是在各種嵌入式 linux(除了 uClinux 以外,還有好幾種)平臺上開發(fā),那 么針對該平臺以及 linux平臺上的源代碼都可以使用,但是要牢記他們之間的差異。目前已經(jīng)有一些針對該協(xié)議成熟的代碼,最有名的是 ucd- snm p,不光軟件本身功能強(qiáng)大,可移植性也比較好,在 linux, unix等平臺上都可以移植,于 是決定將它移植到 ARM+ uClinux平臺上(別看現(xiàn)在說的這么輕松,當(dāng)時接這活時都有點哆 嗦)。 下面簡單列出一些我認(rèn)為移植時需要考慮的問題: (1) 自己的操作系統(tǒng)的特點以及在當(dāng)前版本下支持的特性。 (2) 硬件資源。 (2) 程序運(yùn)行空間。 90%的工作就完成了(不是嗎) 上 回已經(jīng)介紹了一些編譯器方面的東西,下面針對我的 ARM編譯器的具體參數(shù)來講解一些編 譯器主要參數(shù)的設(shè)置。 gcc – c 產(chǎn)生 .o gcc – o hello 產(chǎn)生可執(zhí)行文件,上回說過,主機(jī)編譯器參數(shù)都有環(huán)境變量保存 ,所以看起來很簡單。 下面看一 下用我的編譯器編這個程序(心臟不好的先吃藥)。 Armelfgcc 是 gnu的 arm編譯工具 1) Include 地址:參數(shù): I 值 :root/uClibc/include(這是在主機(jī)上我的uClinux的頭文 件路徑) 用法: I root/uClibc/include I 參數(shù)保證后面的頭文件路徑在搜索系統(tǒng)頭文件路徑前被搜索從而有可能替代系統(tǒng)的頭文 件,如果有多個這樣的參數(shù),則搜索的順序是從左到右,然后是系統(tǒng)的頭文件。 mcpu=arm7tdmi 說明 CPU類型 msoftfloat 產(chǎn)生包含浮點庫的輸出 fsignedchar 讓 char類型有符號 fomitframepointer 對所有不需要幀指針的函數(shù)都不將其保存在寄存器中。 以下是鏈接: armelfld L/root/uClibc/lib L/usr/local/gnu/armelf/lib L/usr/local/gnu/li b/gcclib/armelf/ elf2flt – o hello /root/uClibc/lib/ /usr/local/ gnu/lib/gcclib/armelf/ /usr/local/gnu/lib/gcclib/armelf/– lc 其中 1) 鏈 接工具: armelfld 2) L指明需要鏈接的庫的路徑,用法和 I一樣,自己的庫的路徑也可以在這里加入。還要注意位置,自己的庫文件應(yīng)該加在他的庫前面。 當(dāng)然這只是簡單程序的移植,復(fù)雜案例在下一次講吧。2021 N維電子 All Rights Reserved! N維電子網(wǎng)站群號碼: 25078482 吉 ICP備 06005157號
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1