嵌入式linux開發環境熟悉---第一個hello word!

1.前言:我對linux環境的一點認知

初學嵌入式linux,對於整個環境的認知,以及整個環境的操作非常重要。平時編程都是在集成開發環境下進行,比如VC6.0,寫完代碼後,直接按鈕單擊“編譯”,點擊“運行”,均是界面化操作。但各位開發程序猿們是否想過這集成開發環境的“編譯”和“運行”是如何進行的?又是怎樣一個過程?集成開發環境確實方便,直接通過按鈕的點點就完成了想要的操作,但隱藏了內在的運行邏輯。

而linux下開發,就能讓你的視野更有深度,整個過程沒有集成開發環境,自己編輯代碼,自己寫編譯過程,自己去運行,不再是通過按鈕點點就能完成,你開發的過程就是個集成環境。因此linux下的開發,你能更有深度的去了解開發到運行的內在機理。

下面,筆者就跟的大家一起學習嵌入式Linux學習第一步----熟悉linux開發環境,輸出我的第一個hello word!

2.瞭解編譯過程

通常情況所說的“編譯”,編譯的過程流程如下:

C程序源文件(.c)----預處理---》(.i文件)---編譯---》彙編文件(.s)---彙編---》目標文件(.o)---鏈接---》(可執行文件)

可執行文件可以直接被運行的文件,對於嵌入式Linux開發,可執行文件還需要轉換成二進制文件(.bin),才能燒寫到控制器中。下面針對這個過程進行開發,在Linux下輸出:
start
myhello word!

2.C程序源文件編輯

編輯環境:Windows
編輯器:Source Insight

編寫源程序,不管什麼系統下,只要在任何一個代碼編輯器中,都可以編寫。這裏選擇在Windows的Source Insight編輯器裏寫代碼比較方便些。


  1. 建立一個myhello.c源文件

這裏寫圖片描述

  1. 對myhello.c源文件進行代碼編寫,並保存。main爲函數入口,爲了更深入瞭解編譯文件之間聯繫,加入了HelloFunction()函數調用,然後再創立一個頭文件和源文件來聲明和定義HelloFunction()函數。
    這裏寫圖片描述
#include "stdio.h"
#include "HelloPrint.h"
int main()
{
    printf("start\n");
    HelloFunction();
    return 0;
}

3.同理,創立一個HelloPrint.c源文件,來定義HelloFunction()函數。

#include "stdio.h"
#include "HelloPrint.h"
void HelloFunction()
{
    printf("myhello word!\n");
}

4.同理,創立一個HelloPrint頭文件HelloPrint.h,來聲明HelloFunction()函數。

#ifndef  __HelloPrint_H
#define  __HelloPrint_H

void  HelloFunction(void);

#endif

2.自己寫編譯過程---makefile文件

makefile文件是整個編譯過程的一個集合文件,事先將程序源文件的編譯過程寫到makefile文件裏,以後只要在命令行下輸入make命令,系統自動執行makefile文件裏內容,方便操作。同時,makefile會自動根據目標文件是否改動,依賴文件是否更新,選擇是否要編譯,這樣對於大量的程序文件來說,可以減少編譯時間。makefile文件編寫有具體規則形式,網上也有很多這方面資料。


makefile文件內容如下。其中hello 文件是最終要生成的可執行文件,myhello.c 和HelloPrint.c 是編譯原材料,採用gcc編譯工具。

hello : myhello.c   HelloPrint.c 
    gcc -o hello    myhello.c HelloPrint.c
clean:
    rm hello

3.linux下完成編譯,運行

上面編寫代碼都是在Windows下完成,當然在Linux下也可以編寫,但Windows下寫方便些。寫完以上代碼和makefile文件後,需要上傳上到虛擬機的linux中。

上傳工具:CuteFTP(也可以用虛擬機裏的VMware tools工具拉拽文件)

SSH遠程登錄工具:SecureCRT(登錄到linux服務器,在Windows下的SecureCRT軟件裏即可完成命令行操作),也可以直接在linux的終端操作命令行。      
  1. CuteFTP完成上傳拷貝到Linux下的文件有以下幾個:
    這裏寫圖片描述

  2. SecureCRT登錄到虛擬機linux服務器界面如下,並完成相關指令操作。以及操作後的編譯結果如下:
    這裏寫圖片描述

可以看出make指令後,列出的相關文件多出了可執行文件hello,也就是最後想要的。執行hello後,就可以出現執行結果。第一個hello word的輸出就出現了。make clean是用來執行makefile裏的clean內容,刪除掉可執行文件。


看到這裏的親們是否對linux開發環境有些熟悉了呢?熟悉環境對於開發入門很重要。這些也是嵌入式linux開發基礎,只是程序還沒有燒錄到控制器中,所以下一篇將通過簡單的S3C2440裸板程序開發來學習基礎開發過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章