ubuntu編譯arm
⑴ zlib開發筆記(三):zlib庫介紹、在ubuntu上進行arm平台交叉編譯
本文主要介紹了zlib庫的特性、下載方法,以及在ubuntu上進行arm平台的交叉編譯步驟。zlib是一個免費、通用且不受專利保護的數據壓縮庫,適用於各種硬體和操作系統。以下是具體的操作流程:
首先,確保你的交叉編譯環境已准備就緒,包括製作交叉編譯鏈工具並將其添加到環境變數中。在終端中,創建環境文件`env.sh`,並編輯它以包含交叉編譯器的路徑。啟動控制台並運行`source ../tool/env.sh`來引入這些設置。
接下來,解壓zlib庫(如zlib-1.2.11.tar.gz),並使用交叉編譯器進行配置和編譯。在`makefile`中可能需要修改CC的設置以確保正確連接庫。執行`make`進行編譯,然後用`sudo make install`進行安裝。
模塊化部分,雖然Ubuntu上對庫的模塊化不包含庫,你可以參考《zlib開發筆記(一)》了解更多信息。此外,工程模板zipDemo_v1.0.0_基礎模板可供參考,但可能需要根據ubuntu系統的問題進行適當調整。
以上就是在ubuntu上進行arm平台zlib庫交叉編譯的詳細步驟,如果你對其他平台或版本有疑問,可以查看《zlib開發筆記(二)》或期待後續的文章更新。
⑵ ubuntu怎麼安裝arm交叉編譯工具
Ubuntu下安裝ARM交叉編譯器過程筆記,有圖有真相。
linux下armcc和arm-linux交叉編譯環境的配置
2、開始安裝(建議大家新建一個文件夾),然後將文件復制到新建的文件夾中
Ubuntu下安裝ARM交叉編譯器圖文教程
輸入命令:sudotarxvzfarm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
Ubuntu下安裝ARM交叉編譯器圖文教程
安裝完成後,輸入ls命令,可以看到一個opt文件夾,如下圖
Ubuntu下安裝ARM交叉編譯器圖文教程
3.修改環境變數,把交叉編譯器的路徑加入到PATH:
利用tab鍵的補齊功能進入該路徑,如下圖
輸入pwd命令,查看當前路徑的絕對路徑
/home/cf/ARM/opt/FriendlyARM/toolschain/4.5.1/bin
⑶ ubuntu編譯osmocombb完要多久
ubuntu編譯GNUARM以及OsmocomBB環境方法如下,時間的話看你代碼速度啦
以下所有操作基於Ubuntu Linux下,所以基於Ubuntu、Debian等Linux版本均可使用。
一、以Root許可權進行接下來的所有操作:
$ sudo -s
二、安裝編譯osmocomBB所需的軟體包:
$ aptitude install libtool shtool autoconf git-core pkg-config make gcc
三、下載所需要的GnuARM ToolChain
基於x86架構
$ wget http://gnuarm.com/bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2 網路網盤
$ tar xf bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2
$ mv gnuarm-* ~/gnuarm
基於64位架構
$ wget http://www.gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2 網路網盤
$ tar xf bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2
$ mv gnuarm-* ~/gnuarm
這樣子就已經完成了關於OsmocomBB的交叉編譯環境的搭建,剩下就是最關鍵的設置環境變數
$ export PATH=~/gnuarm/bin:$PATH
建議是直接編輯~/.bashrc的內容,把上面的這個段話直接加到最後。
四、編譯libosmocore:
$ git clone git://git.osmocom.org/libosmocore.git
$ cd libosmocore/
$ autoreconf -i
$ ./configure
$ make
$ make install
$ cd ..
$ ldconfig
ldconfig命令一定不要忘記執行,否則osmocomBB編譯後運行時會出現找不到libosmocore.so.4的錯誤。
五、編譯OsmocomBB:
$ git clone git://git.osmocom.org/osmocom-bb.git
$ cd osmocom-bb
$ git checkout --track origin/luca/gsmmap
$ cd src
$ make
基本上已經完成所有的編譯操作了!Enjoy你的玩具吧!
使用OsmocomBB
首先我們需要在刷寫固件之間完成以下幾個手動操作,以便接下來的其他操作。因為摩托羅拉C118的數據連接線是用2.5mm音頻介面的,所以連接方面大家要注意的是:
連接線介面的小缺陷
紅色框住的地方可能會導致大家在誤以為介面已經完全和手機介面銜接了,但在刷機的時候沒有任何反應。所以這個部分需要大家自己去削一下的。
連接線與TTL的接法
黑/黃:GND
紅:TX
白:RX
以上的接法是針對我們RadioWar淘寶店所出售的CP2102以及FT232rl,而基於淘寶其他的產品可能會在TX和RX部分需要反接,大家要記住。有些朋友會說為什麼我們不建議PL2303,那是PL2303隻有標準的波特率,所以無法進行任何調制,在真正功能固件上使用會出現很大的問題。所以我們不建議使用PL2303
當我們處理完以上的操作之後,就在osmocomBB套件目錄下進行相關固件刷寫操作,請記住這個操作過程只是臨時性的,固件只是以RAM TO ROM的途徑下進行臨時刷寫,關機後原有的摩托羅拉系統依然會存在的。
cd ~/osmocom-bb/src/host/osmocon/
啟動osmocon刷寫所需要的固件,通常大家都是直接刷寫Layer1的固件。
./osmocon -m c123xor -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin
看清楚c123xor是基於C118的,非C118的手機請不要使用這個,並且記住C118的固件目錄就是compal_e88,在輸入以上命令之前,手機必須連接好連接線以及TTL,並且確保手機必須為關鍵狀態。命令輸入完成後,當前命令窗口會出現以下類似信息:
got 1 bytes from modem, data looks like: 2f /
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 1b .
got 4 bytes from modem, data looks like: f6 02 00 41 ...A
got 1 bytes from modem, data looks like: 01 .
got 1 bytes from modem, data looks like: 40 @
出現以上信息後,直接輕按手機的紅色開機鍵,只需點亮機器而不需要進入手機的系統!!!這樣子信息狀態會顯示類似以下的信息:
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/layer1.compalram.bin):file_size=56016,hdr_len=4,dnload_len=56023
got 1 bytes from modem, data looks like: 1b .
got 1 bytes from modem, data looks like: f6 .
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 43 C
Received PROMPT2 from phone, starting download handle_write(): 4096 bytes (4096/56023)
handle_write(): 4096 bytes (8192/56023)
handle_write(): 4096 bytes (12288/56023)
handle_write(): 4096 bytes (16384/56023)
handle_write(): 4096 bytes (20480/56023)
handle_write(): 4096 bytes (24576/56023)
handle_write(): 4096 bytes (28672/56023)
handle_write(): 4096 bytes (32768/56023)
handle_write(): 4096 bytes (36864/56023)
handle_write(): 4096 bytes (40960/56023)
handle_write(): 4096 bytes (45056/56023)
handle_write(): 4096 bytes (49152/56023)
handle_write(): 4096 bytes (53248/56023)
handle_write(): 2775 bytes (56023/56023)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b .
got 1 bytes from modem, data looks like: f6 .
got 1 bytes from modem, data looks like: 02 .
got 1 bytes from modem, data looks like: 00 .
got 1 bytes from modem, data looks like: 41 A
got 1 bytes from modem, data looks like: 03 .
got 1 bytes from modem, data looks like: 42 B
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up
看到以上的信息就證明你的固件刷寫操作已經成功了,下來的操作可以是掃描基站或者其他簡單而快速的方法:
掃描基站
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/cell_log -O
掃描某一個基站,例如30
~/cell_logger/osmocom-bb/src/host/layer23/src/misc/ccch_scan -i 127.0.0.1 -a 30
將掃描基站的日誌保存到本地
mpcap -i lo -w ~/cell_logger/mobilelog/Cell.log
打開WireShark實時讀取相關的信息
sudo wireshark -k -i lo -f 'port 4729'
⑷ Ubuntu 下搭建 GCC 交叉編譯工具鏈
Ubuntu環境中搭建GCC跨平台編譯工具鏈是嵌入式開發的重要步驟,它允許在X86架構的PC上編譯ARM架構的代碼。首先,交叉編譯是區別於本地編譯的概念,針對不同平台的程序編譯,而交叉編譯工具鏈則是一系列工具的集合,包括預處理、編譯、匯編和鏈接等,自動化編譯流程,生成可移植的二進製程序。
在Ubuntu下,我們需要安裝Linaro出品的針對Cortex-A7內核的ARM-Linux-GNU-EABI編譯器,根據系統位數選擇32或64位版本。首先,下載編譯器並將其復制到特定目錄如/usr/local/arm,解壓後,在/etc/profile中添加環境變數。為了確保編譯器的正常使用,還需要安裝相應的庫。驗證安裝成功的方法是通過運行交叉編譯器並查看版本號,如arm-linux-gnueabihf-gcc,如顯示版本號,說明工具鏈安裝已成功。
總結來說,Ubuntu下的GCC交叉編譯工具鏈搭建旨在為嵌入式開發提供必要的環境,通過選擇合適的工具鏈版本,配置環境變數,並驗證工具的可用性,開發者可以在X86平台高效地編譯ARM代碼,實現跨平台開發。