GNU 是一個開源的作業系統 需要的工具: 1. GNU binutils: 包含了一些binary tool * ID: GNU Linker * as: GNU assembler * odjcopy: 能在不同類型的object file間轉換 * odjdump: GNU disassembler,反組譯器,負責將machine code 轉回組合語言 2. GNU C/C++ compiler: 又稱為gcc,好用的編譯器 3. GNU Newlib # 環境配置 操作的linux環境是Ubuntu 20.04.6 LTS ## 安裝GNU binutils 來到home目錄,創建一個資料夾system_resourse放binutils的執行檔;再創建一個資料夾sourse_code,接著cd至該資料夾中,並下載壓縮檔 ``` mkdir system_resourse mkdir sourse_code cd sourse_code wget https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.gz ```  接著解壓縮檔案 ``` tar -zxvf ./binutils-2.31.1.tar.gz ``` 為了使sourse code跟編譯後的檔案分離,在sourse code的資料夾中再創建一個名為build_binutils的資料夾,並cd到其中;接著執行指令使shell script 創建makefile ``` mkdir build_binutils cd build_binutils ../binutils-2.31.1/configure --prefix=/home/system_resourse --target=arm-none-eabi ```  使用make指令使用makefile,接著將執行檔裝到/home/system_resourse中 ``` make make install ``` ## 安裝 arm 跨平台工具 下載arm 跨平台工具 (arm-cross-toolchain-linux-64-20.4.gcc10.tar.gz),並將壓縮檔移動至home目錄下 解壓縮檔案 ``` tar -zxvf ./arm-cross-toolchain-linux-64-20.4.gcc10.tar.gz ``` 配置環境變數 先打開文件 ``` nano ~/.bashrc ``` 將這行加在最下面 ``` export PATH=/home/arm-tool-20.04-20220919/bin:$PATH ``` 加入後 輸入ctrl+O 儲存檔案 輸入Enter確定儲存 輸入ctrl+X 離開 ## 安裝其他相關套件 ``` sudo apt-get update sudo apt-get install gcc g++ autoconf autogen texinfo zlib1g-dev tcl-dev tk-dev libgmp-dev libmpc-dev libmpfr-dev libisl-dev mesa-common-dev libjpeg-dev libtogl-dev python-dev flex bison itcl3 itk3 iwidgets4 libncurses5 ``` ## 安裝X server 以顯示GUI介面 原理: 在Window端安裝X server,以將虛擬機連線到Window端並投影GUI畫面 先安裝X server (VcXsrv) https://sourceforge.net/projects/vcxsrv/files/latest/download 啟動XLaunch.exe  一直按下一步,直到看到這項並打勾  按完成後,允許所有選項  開啟Ubuntu,配置環境變數 先打開文件 ``` nano ~/.bashrc ``` 將這行加在最下面 ``` export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 ``` 加入後 輸入ctrl+O 儲存檔案 輸入Enter確定儲存 輸入ctrl+X 離開 除錯: 發現還是不行時,前往防火牆進階安全設定,刪除跟VcXsrv有關的規則再試試  ### 使用方式 在window端啟用 XLaunch.exe,接著輸入以下指令 ``` arm-none-eabi-insight ```  ## 安裝GDB 首先,來到home目錄下,並輸入以下指令 ``` mkdir gdb cd gdb makir installation git clone https://sourceware.org/git/insight.git cd insight git submodule init git submodule update git config fetch.recurseSubmodules true ./configure --prefix=/home/gdb/installation --target=arm-none-eabi \ --enable-sim make make install ``` 接著配置環境變數 先打開文件 ``` nano ~/.bashrc ``` 將這行加在最下面 ``` export PATH=/home/gdb/installation/bin:$PATH ``` 加入後 輸入ctrl+O 儲存檔案 輸入Enter確定儲存 輸入ctrl+X 離開 ## 壓縮作業 壓縮當前目錄下的所有檔案成hw1_410410054.tar.xz ``` tar Jcvf hw2_410410054.tar.xz . ``` ## 基本操作 編譯C程式成組合語言檔案 (.c -> .s) ``` arm-none-eabi-gcc –S –g sample.c –o sample_armg.s ``` 組譯組合語言檔案 (.s -> .o) ``` arm-none-eabi-as hw1.s -o hw1.o ``` 編譯組合語言檔案 (.s -> .exe) ``` (x) arm-none-eabi-gcc hw1.s –o hw1.exe (O) arm-none-eabi-gcc -g -O0 hw2.s -o hw2.exe ``` 查看組語的檔案資訊 ``` more sample_armg.s ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up