1. 程式人生 > >嵌入式linux開發環境熟悉---第一個hello word!

嵌入式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裸板程式開發來學習基礎開發過程。