2013-02-27 54 views
0

IM在C++工作, 我用LD_DEBUG環境變量以獲得如下庫加載序列:什麼是LD_DEBUG輸出中的「調用init:」?

export LD_DEBUG=libs 

,然後執行該程序。以下是輸出的片段。

|  3652: find library=libc.so.6 [0]; searching 
|  3652: search cache=/etc/ld.so.cache 
|  3652:  trying file=/lib/i386-linux-gnu/i686/cmov/libc.so.6 
|  3652: 
|  3652: 
|  3652: calling init: /lib/i386-linux-gnu/i686/cmov/libc.so.6 
|  3652: calling init: /lib/i386-linux-gnu/mySo.so.1 

任何一個告訴我,在上面的輸出語句中「調用init」的含義是什麼?

回答

1

calling init意味着在該庫中調用了任何初始化函數(例如__attribute__((constructor)),靜態初始化函數和其他設置函數)。

+0

謝謝,但如何調用任何初始化函數,作爲該函數未加載到此點的庫? – BSalunke 2013-02-27 11:40:45

+0

@BSalunke:你沒有看到一切。該庫在「試圖」和「調用」之間加載。試試'LD_DEBUG = all'。 – nneonneo 2013-02-27 11:46:28

+0

這是否意味着只有「查找庫=」標記並不意味着該庫被加載?你能告訴我如何知道哪些庫被加載以及在哪個序列中? – BSalunke 2013-02-27 12:32:42