arm-elf-gcc交叉編譯器的使用教程

arm-elf-gcc交叉編譯器的使用教程

一開始需要安裝arm-elf-gcc,但是這是一個32位的程序,我是安裝了64位的系統,據說安裝ia32.libs依賴庫能運行這個,但是看到博客上面前人安裝完了系統圖標少了一半,然后就怕了。經過了翻看ubuntu論壇和各種博客,才知道14版之后的ubuntu64位官方已經拋棄了ia32.libs這個依賴庫,在源列表中也是找不到的。但是官方自身已經支持32位,自帶32位依賴庫,在根目錄下面就有一個lib32文件夾。

安裝教程

博主使用的是arm-elf-tools-20040427.sh的編譯器,比較老舊,但不影響使用。

  1. 打開終端
  2. 切換到arm-elf-tools-200427.sh所在路徑
  3. 增加執行權限
    sudo chmod 755 arm-elf-tools-20040427.sh
  4. 安裝
    sudo sh arm-elf-tools-20040427.sh

以上,安裝完成

注:文件arm-elf-tools-20040427.sh的大小有17M,這個腳本就是安裝文件。沒事不要用普通的文本編輯器打開,高級點的文本編輯器可以。

使用教程

首先上一份簡單的測試代碼

int max( int* pt, int size )
{int max_v = -32768;int* tmp = &pt[size];int* pi = pt;while(pi<tmp){if( *pi>max_v ){max_v = *pi;}pi++;}return max_v;   
}
  1. arm-elf-gcc -S max.c
    得到由c文件生成的匯編文件max.s
    1

  2. arm-elf-gcc -c max.s
    由匯編文件編譯得到Object文件max.o
    2

  3. arm-elf-readelf -a max.o > max_elfinfo
    這個命令將給出全部的Object文件信息,保存在max_elfinfo這個文件中
    3

  4. 查看一下max_elfinfo文件:ELF_header
    4

  5. 查看一下max_elfinfo文件:Section_header
    5
    5_2

  6. hexdump -C max.o > max_hex
    直接打印出Object文件的全部字節,保存在max_hex文件中
    6
    以上面的.real.text為例子
    6_2

  7. Elf最后輸出的內容
    7
    .rel.text告訴鏈接器指令中的哪些地方需要做重定位;
    .symtab是符號表。Ndx列是每個符號所在的Section編號
  8. arm-elf-ld.real -o max2.out max.o
    鏈接指定Object文件,max2.out為生成的文件,max.o為源文件
    8
    由于沒有__gccmain函數入口,故有warning,此處先不管,綠色即為新生成文件
  9. 用readelf命令分析新生成的max2.out
    arm-elf-readelf -a max2.out > max2_elfinfo
    9
    9_2
    9_3

  10. 調用不同c文件中的子函數
    程序修改后如下:
    10
    10_2
    10_3

  11. 編譯兩份c文件生成 .o 文件
    11

  12. arm-elf-ld.real -o main2.out main.o encrypt_char.o -lc
    main2.out是鏈接生成的文件,main.o encrypt_char.o是參與鏈接的源文件,-lc 允許鏈接器搜索默認的路徑,當你使用了系統自帶的頭文件或子函數時,需要添加該選項以便鏈接器能順利鏈接到對應庫
    12

  13. arm-elf-objdump -S main2.out > main2_1.s
    反匯編鏈接后的.out文件,和鏈接前的.o文件反匯編結果進行比較
    13
    新生成的main2_1.s文件里面比原來的多了很多內容,最大的不同在于區分了各個文件的代碼段
    13_2
    13_3
    13_4

轉載于:https://www.cnblogs.com/wsine/p/4664503.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374756.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣刪除排序數組中的重復項 II

給你一個有序數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使每個元素 最多出現兩次 &#xff0c;返回刪除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的條件下完成。 思路&#xff1a; 雙指針…

2 android學習資料

http://blog.csdn.net/lmj623565791 http://blog.csdn.net/harvic880925/article/details/50995268轉載于:https://www.cnblogs.com/YyuTtian/p/5440930.html

建立自己的GWT Spring Maven原型

大家好&#xff0c; 在觀看Justin撰寫的有關Spring和GWT的非常有趣的文章時&#xff0c;我認為展示如何構建自己的自定義Maven原型非常有用。我們將展示的原型基于Justin的上一個項目&#xff0c;并包括各種技術&#xff0c;例如Spring &#xff0c; GWT &#xff0c; AspectJ…

C# 連接Oracle數據庫異常總結

這2天因為工作需要連接Oracle數據庫&#xff0c;中間發生了很多問題 一、使用OleDbConnection連接數據庫 ------------------ ProviderOraOLEDB.Oracle.1;User IDsajet;Passwordtech;Data Source(DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL TCP)(HOST 192.168.66.225)(…

力扣顏色分類

給定一個包含紅色、白色和藍色&#xff0c;一共 n 個元素的數組&#xff0c;原地對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排列。 此題中&#xff0c;我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 思路:將紅色和藍色…

Cassandra,MongoDB,CouchDB,Redis,Riak,HBase比較

克里斯托夫科瓦奇&#xff08;KristfKovcs&#xff09;對六個最受歡迎的“ NoSQL ”數據庫實現進行了非常有趣的簡短比較 。 除了Kristf的工作之外&#xff0c;我還想提供一些鏈接&#xff0c;我相信這些鏈接將對有興趣關注“ NoSQL ”社區的所有人員提供幫助&#xff1a; No…

程序員需要謹記的九大安全編碼規則

歷史已經證明&#xff0c;軟件設計的缺陷一直是導致其漏洞被利用的最主要的罪魁禍首。安全專家發現&#xff0c;多數漏洞源自常見軟件中相對有限的一些漏洞。軟件開發者和設計者應當嚴格檢查程序中的各種錯誤&#xff0c;盡量在軟件部署之前就減少或清除其中的漏洞。 下面列舉的…

HDU 2897

Problem Description當日遇到月&#xff0c;于是有了明。當我遇到了你&#xff0c;便成了侶。那天&#xff0c;日月相會&#xff0c;我見到了你。而且&#xff0c;大地失去了光輝&#xff0c;你我是否成侶&#xff1f;這注定是個凄美的故事。&#xff08;以上是廢話&#xff09…

力扣合并兩個有序數組

題目&#xff1a;給你兩個按 非遞減順序 排列的整數數組 nums1 和 nums2&#xff0c;另有兩個整數 m 和 n &#xff0c;分別表示 nums1 和 nums2 中的元素數目。 請你 合并 nums2 到 nums1 中&#xff0c;使合并后的數組同樣按 非遞減順序 排列。 注意&#xff1a;最終&#…

Google Guava庫必需品

我希望代碼簡單&#xff0c;短而又易于閱讀。 不必要的復雜性分散了人們對真實情況的理解&#xff0c;使他們難以理解&#xff0c;并且可能成為生產力的真正殺手。 您知道&#xff0c;纏結的for循環和索引可以跟蹤是否/其他情況和切換用例&#xff0c;空/驗證檢查&#xff0c;轉…

單調棧3_水到極致的題 HDOJ4252

A Famous City 題目大意 給出正視圖 每一列為樓的高度 最少有幾座樓 坑點 樓高度可以為0 代表沒有樓 貢獻了兩發RE 原因 if(!s.empty()&&tem){s.push(tem); continue;}并不能篩去 空棧且 tem為0的情況 改為 if(!s.empty()){if(tem) s.push(tem); continue;} 后AC 題目…

eclipse配置遠程調試

一、配置 1、cd apache-tomcat/bin 2、vi startup.sh文件 3、在文件開頭處&#xff0c;添加下方代碼(address代表的是調試端口) declare -x CATALINA_OPTS"-Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:servery,transportdt_socket,suspendn,address…

力扣兩數之和 II - 輸入有序數組

題目:給定一個已按照 非遞減順序排列 的整數數組 numbers &#xff0c;請你從數組中找出兩個數滿足相加之和等于目標數 target 。 我的代碼&#xff1a; 對撞指針 class Solution {public int[] twoSum(int[] numbers, int target) {int low 0;//指向頭int high numbers.le…

SpringMVC 3 Tiles 2.2.2集成教程

Apache Tiles是基于Java的Web應用程序的流行且最常用的模板框架。 由于Struts 1.x使用Tiles作為其默認模板框架&#xff0c;因此Tiles變得更加流行。 SpringMVC是一個MVC框架&#xff0c;例如Struts &#xff0c;也支持將Tiles集成為其模板框架。 讓我們看看如何集成SpringMVC和…

[團隊項目3.0]Scrum團隊成立

Scrum團隊成立 5.Scrum團隊成立 5.1 團隊名稱&#xff0c;團隊目標、團隊口號、團隊照&#xff1b; 5.2 角色分配 產品負責人: 決定開發內容和優先級排序&#xff0c;最大化產品以及開發團隊工作的價值。 Scrum Master&#xff1a; 負責確保團隊遵循 Scrum 的理論、實踐和規則。…

Base64編碼的java實現

Java本身是提供了Base64編碼的工具包的&#xff0c;做項目的時候自己實現了個&#xff0c;在這里記錄一下&#xff1a; 1 /** Base64編碼數組 */2 private static final String base64EncodeChars "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456…

Character.isLetterOrDigit(ch)判斷ch是否為字母或數字

Character.isLetter(ch) 判斷ch是否為字母 Character.isDigit(ch) 判斷ch是否為數字 Character.isLetterOrDigit(ch) 判斷ch是否為字母或數字 /* 例子*/char ch q;System.out.println(Character.isLetter(ch));System.out.println(Character.isDigit(ch));System.out.print…

高級SmartGWT教程,第1部分

賈斯汀&#xff08;Justin&#xff09;&#xff0c;帕特&#xff08;Pat&#xff09;和我已經開始著手一個需要用戶界面進行管理和管理的副項目。 在與SmartGWT和GWT共同工作了一段時間之后&#xff0c;我們決定使用SmartGWT創建接口。 我們非常喜歡視覺組件&#xff08;請查看…

git 技巧

將某個文件回退到某個版本 git co d359624286d9c1f022b8b3b6f2d3fe3b6524188b build.sh 查看某個文件在某個版本時的內容 git show d359624286d9c1f022b8b3b6f2d3fe3b6524188b:build.sh 如果想把這個文件重命名保存 git show d359624286d9c1f022b8b3b6f2d3fe3b6524188b:build.s…

機會

民生電商的機會.地點在成都. 聯系 &#xff1a;iskall0 at 163.com 待遇 &#xff1a;和BAT差不多. H5方向&#xff1a; 前端功底扎實.對H5有較深的理解和造詣.大數據方向1&#xff1a; SSH玩的熟.linux玩的熟.熟悉云計算架構和SOA.MySQL玩的熟,PostgreSQL加分 : ]熟Hadoop、St…