多目標檔案的鏈結

2022-05-28 10:33:16 字數 962 閱讀 1625

考慮下面幾個程式段:

/*

stack.c

*/char stack[512

];int top = -1

;void push(char

c)char pop(void

)int is_empty(void

)

/*

main.c

*/#include

int a, b = 1

;int main(void

)

編譯時可以一步編譯 :

gcc main.c stack.c -o main
也可以多步編譯:

gcc -c main.c

gcc -c stack.c

gcc main.o stack.o -o main

用nm命令檢視目標檔案的符號表,會發現main.o中有未定義的符號push、 pop、 is_empty、 putchar,前三個符號在stack.o中實現了,鏈結生成可執行檔案main時可以做符號解析,而putchar是libc的庫函式,在可執行檔案main中仍然是未定義的,要在程式執行時做動態鏈結。

我們通過readelf -a main命令可以看到, main的.bss段合併了main.o和stack.o的.bss段,其中包含了變數a和stack, main的.data段也合併了main.o和stack.o的.data段,其中包含了變數b和top, main的.text段合併了main.o和stack.o的.text段,包含了各函式的定義。如下圖所示:

main的每個段中來自main.o的變數或函式都在前面,而來自stack.o的變數或函式都在後面呢?我們可以試試把gcc命令中的兩個目標檔案反過來寫:

gcc stack.o main.o -o main
結果正如我們所預料的,可執行檔案main的每個段中來自main.o的變數或函式都排到後面了。 

多目標跟蹤

目前參與的乙個專案是 足球事件檢索 事件是乙個 high level 概念,需要基於一些 low level 資訊來做。後者主要就是一些影象處理的東西了。兩個 level 之間,會有一些中間層的資訊,比如足球的走向。根據師兄的建議,可以考慮對足球場上的運動員進行多目標跟蹤,在跟蹤軌跡的基礎上抽取一些...

多目標優化問題 投資組合的多目標優化

一 多目標問題 二 多目標規劃有效解 1 有效點 參考定理 2 凸多目標規劃 詳細見參考文獻1 3 絕對最優解 有效解 弱有效解 絕對最優解 有效解與弱有效解 4 真有效解 由於有效解的範圍過大,有時候要在要在有效解的範圍內加以限制定義了真有解。根據不同的限制定義了許多不同的真有效解。5 極錐解與非...

多目標模板匹配

一.模板匹配 模板匹配是數字影象處理的重要組成部分之一。把不同感測器或同一感測器在不同時間 不同成像條件下對同一景物獲取的兩幅或多幅影象在空間上對準,或根據已知模式到另一幅圖中尋找相應模式的處理方法就叫做模板匹配。簡單而言,模板就是一幅已知的小影象。模板匹配就是在一幅大影象中搜尋目標,已知該圖中有要...