想要進入工程師的世界,首先要先學會架設自己的Build code環境,有了編譯環境,接下來就可以安心的撰寫你想要的C語言程式啦!
如果你不知道該從何下手,那不妨先照著本篇文章的步驟做,Violet一步一步教你並解釋每個步驟的意義,很快你就會得到一個能編譯C語言程式碼的虛擬基環境哦!
首先要設定虛擬機的規格,比如記憶體空間及作業系統型態等。
選擇文件系統及版本
設定記憶體大小
設定硬碟來源
硬碟映像檔
有了虛擬機之後,可以開始安裝Ubuntu作業系統了。這過程就如同你在電腦上灌Windows作業系統一樣。
掛載指定的Ubuntu映像檔
虛擬機開機
選擇開機硬碟
安裝Ubuntu
準備安裝Ubuntu
選擇安裝方式
寫入補丁
選擇地區
選擇語言
設定虛擬機登入帳戶
等待安裝完成
安裝好以下套件後,需要重新啟動虛擬機,就能複製windows的文字貼上了。
sudo apt-get install open-vm-tools-desktop
要能順利到指定的Git server上下載源碼(source code),需要在虛擬機上生成私鑰及公鑰,並將公鑰填到Git server上。
ssh-keygen
生成好後,找到id_rsa.pub檔案並開啟,將其內容複製貼上到Git server上,即可下載該Git server的source code到你的虛擬機上了。
路徑:~/.ssh/id_rsa.pub
安裝好Ubuntu後,終於進入Ubuntu系統啦!現在可以開始在Ubuntu中架設Build code環境,為了之後編譯C語言程式碼做準備。
開啟terminal
sudo apt-get update
sudo apt-get install vim
安裝vi指令
mkdir yolanda
cd yolanda
touch hello.c
vi hello.c
5. hello.c檔的內容。
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
創建.c檔
touch Makefile
vi Makefile
hello:
gcc hello.c -o hello
創建Makefile
檢查檔案
make hello
ls
./hello
編譯.c檔
開發過程中,常常會需要在本機與虛擬機之間傳輸檔案,這時候我們可以透過最簡單的方法,就是使用WinSCP當作橋梁,來完成本機與虛擬機之間的連線。接下來將會介紹如何設定WinSCP來傳輸檔案,當然還有很多方法可以傳輸檔案,有興趣可以自行研究。
sudo apt-get install openssh-server # 安裝ssh來實現遠端連線
vi /etc/ssh/sshd_config # 視情況修改ssh的設定檔
/etc/init.d/ssh restart # 修改完設定檔後,需要重新啟動ssh
sudo service ssh start # 若ssh程序不存在,下指令將其開啟
ps -e | grep ssh # 檢查ssh是否被開啟成功
檢查ssh服務
檢查實體電腦的網卡狀態
Ubuntu網卡IP
設定虛擬機網路
設定虛擬機網路
WinSCP輸入Ubuntu資訊
WinSCP連線到Ubuntu
WinSCP建立連線成功
開發過程中,可能會需要在不同的平台上來執行檔案,而不同的平台可能會用不同的CPU架構等等,這時候如果將在x86平台編譯出來的執行檔放到ARM架構上面執行,是會無法執行的,因此我們需要使用交叉編譯來解決跨平台的問題。
想要交叉編譯,首先要有該平台相對應的toolchain。我們以ARM平台的toolchain為例,如果你已經有toolchain了,可以照著下面的步驟繼續做。
下載toolchain
touch env.sh
#!/usr/bin/env bash
export CROSS_COMPILE_PATH=toolchains/iproc
export PSTH=$PATH:${CROSS_COMPILE_PATH}/bin
export CROSS_COMPILE=${CROSS_COMPILE_PATH}/bin/arm/linux-gcc
環境變數設定
source liteon_env.sh
arm-linux
環境變數生效
hello:
${CROSS_COMPILE} ${PWD}/hello.c -o hello
修改Makefile來執行交叉編譯
make hello
ls
file hello
交叉編譯hello.c
做到這邊,恭喜你已經擁有了自己的編譯環境,也學會了基本的Makefile編譯。
不過Makefile寫法博大精深,有太多太多東西可以介紹了,這邊就不多做說明了。
感謝您耐心閱讀~
本專題將會持續收錄Violet的職場筆記。
若有理解不對的地方,歡迎留言指教!
若喜歡我的文章,歡迎贊助支持,您的支持將會成為我繼續創作的動力!