環境:
主機: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