centos7.2中搭建ARM開發環境所需工具初體驗
需要用到的工具:
編譯工具:arm-linux-gcc
連結工具:arm-linux-ld
格式轉換工具:arm-linux-objcopy
反彙編器:arm-linux-objdump
檔案資訊檢視:arm-linux-readelf
下載工具:dnw
除錯工具:arm-linux-gdb
JLink驅動:JLinkGDBServer
1. 將arm-linux-gcc的bin目錄新增至環境變數,使用命令如下
vi ~/.bashrc
在.bashrc檔案末尾加上
export PATH=$PATH:/home/lu/arm_bin/4.3.2/bin,後面路徑需意個人境況而定,等號兩邊不要有空格
新增後,輸入在命令視窗輸入arm-linux-gcc會出現如下錯誤:
[[email protected] arm]$ arm-linux-gcc -v
/home/lu/arm_bin/4.3.2/bin/arm-linux-gcc: /home/lu/arm_bin/4.3.2/bin/arm-none-linux-gnueabi-gcc: /lib/ld-linux.so.2: bad ELF interpreter: 沒有那個檔案或目錄
/home/lu/arm_bin/4.3.2/bin/arm-linux-gcc:行3: /home/lu/arm_bin/4.3.2/bin/arm-none-linux-gnueabi-gcc: 成功
這是因為在在64位系統中執行32位程式需要安裝32位的庫,使用如下命令安裝
yum install glibc.i686
以hello.c為例,使用arm-linux-gcc,如下
[[email protected] arm]$ arm-linux-gcc hello.c -o hello
[[email protected] arm]$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
若是使用gcc則編譯出的可執行檔案適用平臺為X86_64,如下所示
[[email protected] arm]$ gcc hello.c -o hello2
[[email protected] arm]$ file hello2
hello2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ec21632861f93013791b58571a92f669486bc445, not stripped
2.在實際編譯過程中,一般使用arm-linux-gcc工具時只編譯不連結,使其生成目標檔案即可(.o檔案),而是由arm-linux-lds來完成連結,其用法為
arm-linux-ld -T*.lds(連結指令碼檔案) -o *.elf *.o *.o(所需要連結的檔案)
連結後的檔案為.elf格式的,這並不能在ARM上直接執行,能在ARN上執行的是二進位制檔案,格式為.bin
此時,還需另一工具arm-linux-objcopy來完成轉換,使ELF檔案變為bin檔案,其用法如下
arm-linux-objcopy -O binary *.elf *.bin
-O binary意味輸出二進位制檔案
至此,能在ARM上執行的可執行的檔案就製作好了
3.arm-linux-objdump,反彙編器,即根據編譯好的 程式碼來商城彙編程式碼,其用法如下
arm-linux-objdump -D -S *.elf >dump,其預設是將生成的程式碼輸入到螢幕,效果如下
#include<stdio.h>
int main()
{
8380: e92d4800 push {fp, lr}
8384: e28db004 add fp, sp, #4 ; 0x4
8388: e24dd008 sub sp, sp, #8 ; 0x8
printf("hello world");
838c: e59f000c ldr r0, [pc, #12] ; 83a0 <main+0x20>
8390: ebffffca bl 82c0 <_init+0x48>
}
8394: e24bd004 sub sp, fp, #4 ; 0x4
8398: e8bd4800 pop {fp, lr}
839c: e12fff1e bx lr
83a0: 0000842c .word 0x0000842c
地址 機器碼彙編程式碼
編譯時加上除錯資訊(-g) 才會在反彙編時會有C的語句出現,如上printf("hello world");的出現,C與彙編對應起來更容易查詢錯誤所在
4.arm-linux-readelf,此工具可以用來檢視elf格式檔案的資訊,如下[[email protected] example]$ arm-linux-readelf -a led.elf
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
由此資訊可看到,此ELF檔案使用平臺為ARM,採用小端格式儲存資料arm-linux-readelf還可以用來檢視所需的庫檔案,如下所示
[[email protected] example]$ arm-linux-readelf -d hello
Dynamic section at offset 0x450 contains 24 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x8278
0x0000000d (FINI) 0x841c
5.安裝gdb server
安裝arm-linux-gdb後,還需在環境變數中增加其路徑,使用如下命令
gedit ~/.bashrc
然後在其檔案倒數第二行增加如下內容:
export PATH=$PATH:/opt/arm-linux-gdb/bin注:因為在arm-linux-gcc中同樣含有arm-linux-gdb工具,但此版本(6.8.50)並不能在arm中使用,需要在網上下載更高版本的,而把arm-linux-gdb放在倒數第二行,是因為,我們需要優先使用專門下載的arm-linux-gdb工具,.bashrc最後兩行程式碼如下:
export PATH=$PATH:/opt/arm-linux-gdb/bin
export PATH=$PATH:/home/lu/arm_bin/4.3.2/bin
在呼叫arm-linux-gdb時,同樣會因為作業系統為64位,軟體為32位,出現錯誤,如下
arm-linux-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
使用如下命令安裝所需32位庫即可yum install xulrunner.i686
6.啟動JLinkGDBServer時同樣會出現錯誤,如下
./JLinkGDBServer: error while loading shared libraries: libusb-0.1.so.4: cannot open shared object file: No such file or director
在此連結中找到對應庫即可同樣,啟動JLinkGDBServer時還可能會出現如下錯誤:
[[email protected] JLink_Linux_V434a]# ./JLinkGDBServer
SEGGER J-Link GDB Server V4.34a
JLinkARM.dll V4.34a (DLL compiled Aug 31 2011 11:51:40)
ERROR: Failed to bind address (Err = 98)
ERROR: Failed to open listener port 2331
Exiting...
這個錯誤,經過本人重新插拔模擬器,重啟系統,重新下載驅動,查詢佔用2331埠的程式並kill它,都沒有解決,最終,經過他人指點,修改45-jlink.rules搞定了,將45-jlink.rules內容全部換為以下程式碼即可(先備份45-jlink.rules)SUBSYSTEM=="usb", ATTRS{idVendor}=="1366", ATTRS{idProduct}=="010[1234]", MODE="664", GROUP="plugdev"
45-jlink.rules所在路徑為
/etc/udev/rules.d/45-jlink.rules
最後,將JLinkGDBServer複製到 /usr/bin路徑下,這樣在任何路徑下都能呼叫了
相關推薦
centos7.2中搭建ARM開發環境所需工具初體驗
需要用到的工具: 編譯工具:arm-linux-gcc 連結工具:arm-linux-ld 格式轉換工具:arm-linux-objcopy 反彙編器:arm-linux-objdump 檔案資訊檢視:arm-linux-readelf 下載工具:dnw 除錯工具:ar
Windows下,在IDEA中搭建MapReduce開發環境(需基礎,非詳盡篇)
hadoop在官網下載,jdk在官網下載,自行解壓下載的hadoop包,安裝下載的jdk。 開啟IDEA,新建專案: File->Project Structure: 選擇之前解壓的hadoop資料夾中的share/hadoop目錄下的common
Centos7.2下部署Java開發環境
$path 2.x ava x64 jdk server telnet 選擇 new 1.安裝JDK 如果以前安裝過JDK,想要重新安裝可執行如下命令進行卸載,這裏安裝的是JDK1.8: 先查詢: rpm -qa|grep jdk 然後再通過下面命令進行卸載
在Xcode7中搭建Python開發環境
xcode7 python如果你是從IOS開發轉PYTHON,鐘情於Xcode :)說實話,不好用,也許我用的少?======================================在Xcode7中搭建Python開發環境 一、開發環境準備 1、安裝Xcode 2、找到Mac OS X上安裝Pytho
使用 Laragon 在 Windows 中搭建 PHP開發環境及常見問題解決
PHP的整合開發環境市面上已經有很多非常成熟好用的整合軟體了,比如WAMP, Xampp, PhpStudy等,如今我發現了另一款非常好用的整合軟體Laragon,可能更有利於新手通過PHP整合開發環境,進行web專案開發。 安裝 我們可以在官網https://laragon
Java基礎面試題(2)----搭建Java開發環境的步驟
問題:簡單說一下Java搭建開發環境的步驟 回答: 1. 安裝對應版本的JDK,配置環境變數。 首先說一下JDK,JRE,JVM的關係 JDK Java Development kit,Java開發者工具包,針對開發者,裡面包含了JRE,JVM,JDK原始碼包
Idea 安裝以及破解 ,以及在Idea中搭建PHP開發環境
4. php.ini 中增加一下: zend_extension=php_xdebug-2.6.1-7.1.dll [Xdebug] zend_extension_ts=php_xdebug-2.6.1-7.1.dll ;xdebug.remote_host=
React框架:2、搭建React開發環境
宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!!! 如何搭建React的開發環境? 1、大前提是電腦已經安裝最新版的node.js環境,可以去官網下載最新的環境。 可參考:Node.js的安裝
在 ubuntu18.04 中搭建 Django 開發環境
在Ubuntu 18.04 安裝 python3、pip3、pycharm,搭建 Django 開發環境。 1、安裝 python3 pip3 sudo apt-get install python3 sudo apt-get install python3-pip 2、安裝 pycharm 在官網中
在Ubuntu中搭建.NET開發環境
server { listen 30000; server_name localhost; access_log /var/log/nginx/mono.log; location / {
在Visual Studio2015中搭建OpenGL開發環境(win10)
一、下載OpenGL的GLUT庫 Windows環境下的GLUT官方下載地址:(蘋果機不需要安裝,自帶) OpenGL全部標頭檔案和庫檔案(不包括顯示卡自帶的) 連結: http://pan.baidu.com/s/1i3YKhBv 密碼:5x5t 二、O
Eclipse中搭建MapReduce開發環境
一、安裝Eclipse1、下載-官方網址2、解壓 tar -zxvf eclipse-committers-oxygen-3a-linux-gtk-x86_64.tar.gz3、啟動 (建立桌面快捷方式) 我們可以直接啟動,進入eclipse解壓目錄使用
在sublime text 3中搭建Java開發環境
在jdk bin目錄下新建一個bat檔案: 如D:\JAVA\jdk1.8.0_65\bin\runJava.bat @ECHO OFF cd %~dp1 ECHO Compiling %~nx1.
手把手在MyEclipse中搭建Hibernate開發環境
在MyEclipse中如何搭建Hibernate開發環境?本文講解一個入門級Demo,希望可以幫助更多的初學者。1、下載對應的Hibernate版本hibernate-release-5.0.7.Fin
在Netbeans中搭建Android開發環境
一.安裝NBAandroid外掛 在幾乎所有我查到的教程中,都是說在netbeans中, 但是我試過後發現,怎麼都沒法成功更新,為什麼呢?看這裡我們就明白了. 這是因為更新中心的連結已經失效,我們需要 解壓縮所下載的ZIP檔案,開啟netbeans的Tools->Pl
windows下idea中搭建hadoop開發環境,向遠端hadoop叢集提交mapreduce任務
1.下載hadoop2.6.0-cdh5.6.1,解壓並安裝 公司用的hadoop叢集版本是hadoop2.6.0-cdh5.6.1,防止版本衝突,所有的hadoop版本號都用了這個。 下載地址:http://archive.cloudera.com/cdh
ubuntu環境中搭建java開發環境(含遇到的錯誤及解決辦法)
一.安裝JDK 方法很多,參考網址http://blog.csdn.net/zth1002/article/details/51383508 即可。 注意這裡,在配置好了環境變數之後,可以不用重啟電腦,可以直接source ~/.bashrc使剛剛的修改直接
關於GNU ARM → GNU MCU Eclipse的強行翻譯——eclipse下搭建arm開發環境_(1)
我先致敬一波大神,總是有人跟我一樣,不是計算機專業卻整天想搞個大新聞首先宣告,本人翻譯在翻譯專業中應稱作意譯,所以有不同意見歡迎討論====================老子就是正文分割線===============================GNU MCU Ecli
在 Xcode 9 中搭建 Python 開發環境
環境依賴 macOS、Xcode 9、Python(macOS 預設安裝了 Python2.7)。 ThefirststepThefirststep:建立工程 首先,新建一個 ExternalBuildSystemExternalBuildSystem,如
eclipse開發android-ndk環境所需工具包及安裝配置方法
一、準備工具包 到網盤下載android相關工具包; 地址:https://pan.baidu.com/s/1kUSRu31 二、安裝 1、安裝eclipse、adt、sdk; 解壓adt-bu