交叉編譯,簡單地說,就是在乙個平台上生成另乙個平台上的可執行**。下面就做乙個簡單的hello world實驗來完成這一過程。
本實驗涉及兩台主機。
a主機:安裝交叉編譯環境,並用來編譯原始檔。在本次實驗中使用的是虛擬機器ubuntu系統環境(1)首先使用直連線連線a主機對應的物理主機。b主機: arm架構平台開發板,用來執行a主機編譯好的可執行檔案,ip位址固定為
192.168.1.230
(2)修改物理主機的ip位址(要求和b主機的網段一致),子網掩碼,閘道器(預設即可,不要配置)
(3)修改虛擬機器的網路連線方式為橋接
(4)修改虛擬機器的ip位址和子網掩碼
(5)重啟虛擬機器,以使網路配置可以
1
$重啟完成後執行以下命令檢視是否配置成功reboot
1
$ifconfig
配置完成後虛擬機器和開發板互ping,都ping通。
解壓交叉編譯gcc工具並放到共享目錄裡
1234
#複製gcc到共享目錄裡
qcmoke@qcmoke-virtual-machine:~/nfs/linux$ cp arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz /home/qcmoke/nfs/#解壓
qcmoke@qcmoke-virtual-machine:~/nfs$ tar zxvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
1
qcmoke@qcmoke-virtual-machine:~/nfs$ vim hello.c
123456
#includeintmain
()
1
qcmoke@qcmoke-virtual-machine:~/nfs$ ./opt/friendlyarm/toolschain/4.5.1/bin/arm-linux-gcc hello.c -o hello
1
qcmoke@qcmoke-virtual-machine:~$ telnet 192.168.1.230
需要在a主機搭建nfs伺服器,以便快速共享編譯好的可執行檔案。具體搭建教程請參考ubuntu 16.04 nfs服務的搭建。在本次實驗中搭建的nfs共享目錄是a主機的/home/qcmoke/nfs/
目錄,而掛載點是b主機的/mnt/nfs/
目錄。
通過在編譯環境的主機執行以下命令檢視共享目錄位址
123
qcmoke@qcmoke-virtual-machine:~$ showmount -e localhost根據查詢結果掛載到arm主機某個目錄,如export list for localhost:
/home/qcmoke/nfs *
/mnt/nfs
12345
#通過以下命令檢視是否掛載成功建立掛載點
[root@friendlyarm /]# mkdir /mnt/nfs#掛載
[root@friendlyarm /]# mount -o rw 192.168.1.232:/home/qcmoke/nfs/ /mnt/nfs/ -o nolock
1
[root@friendlyarm /]# df
1
[root@friendlyarm /]# /mnt/nfs/hello
執行成功,交叉編譯完成!?
乙個簡單的C語言程式HelloWorld
所謂萬事開頭難嘛,我們就先寫乙個最簡單的c語言程式來認識c語言吧!萬能的helloworld include int main void 下面進行講解上面的程式 include 預處理器指令,此處引用了stdio.h main 主函式,程式第乙個呼叫的函式 printf 格式化輸出資訊 return...
今日外掛程式的乙個HELLO WORLD
hinstance g inst hwnd g hwnd hwnd g testwnd lresult callback wndproc hwnd hwnd,uint uimessage,wparam wparam,lparam lparam bool apientry dllmain handle...
乙個hello world的編譯原理
乙個簡單的hello world 程式 include int mian 通過 gcc hlello.c a.out 可生產hello world 事實上,上述過程可以分解為4個步驟,分別是預處理 prepressing 編譯 compilation 彙編 assembly 和連線 linking ...