linux C語言finsh

環境:
    主機:ubuntu16.04
    編譯器:arm-xilinx-linux-gnueabi-gcc 
    目標機:zynq7000,32bit
    版本:4.9.2

環境:
    主機:ubuntu16.04
    編譯器:gcc
    目標機:本機,64bit
    版本:5.4.0
    主機上編譯,使用命令時必須把下面內容中的"arm-xilinx-linux-gnueabi-"刪除
    
    
    

 

 

 

 

 

 


第一、創建鏈接腳本
1、輸出腳本
#arm-xilinx-linux-gnueabi-ld -verbose > ld.lds
2、刪除"OUTPUT_FORMAT"前面的內容,刪除"=================================================="內容以及其後面的內容。
得到的腳本極爲gcc默認的連接腳本。
3、將"_edata = .; PROVIDE (edata = .);"和". = .;"內容之間加入如下內容:
  FSymTab :
  {
    PROVIDE_HIDDEN (__fsymtab_start = .);
    KEEP (*(FSymTab))
    PROVIDE_HIDDEN (__fsymtab_end = .);
  }
  VSymTab :
  {
    PROVIDE_HIDDEN (__vsymtab_start = .);
    KEEP (*(VSymTab))
    PROVIDE_HIDDEN (__vsymtab_end = .);
  }
得到的腳本爲最終使用的鏈接腳本。


第二、編譯(不能使用動態庫的形式,因爲主程序中和finsh庫中都會使用同樣的地址標號)
1、進入src目錄,執行create-a.sh,就會編譯出libfinsh.a靜態庫
2、在主目錄執行命令編譯出執行,或者執行腳本"#sh ld.sh"
#arm-xilinx-linux-gnueabi-gcc -o main.bin   main.c -I./src  -L./src -lfinsh -T  ./src/ld.lds

    
    

發佈了42 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章