我正在做一個檢查elf文件的腳本,並且在某些時候需要檢查它的鏈接類型。
那麼,
有什麼工具在Linux或穩定的方式,我可以用來檢查輸出文件是完全靜態鏈接或動態鏈接?如何判斷一個精靈文件的鏈接類型?
'ld.so --verify'可以檢查文件是否是動態鏈接的,但是它也檢查這個鏈接器是否可以手動處理,所以我不能使用結果作爲鏈接類型的判斷。
'nm','file'等其他工具會檢查輸出文件並提供一些關於按打印信息鏈接類型的信息,這使得使用..e.g不是很可靠。如果我寫腳本grep單詞'動態鏈接''靜態鏈接'從'文件$文件名'的標準輸出作爲驗證鏈接類型不覺得可靠..
所以,有沒有任何簡單的方法或檢查鏈接類型的小工具?或爲什麼它不可能?
謝謝。但我已經檢查了ldd的源代碼,不要認爲ldd只有在它不是動態鏈接時纔會返回1,也可能是其他原因,所以我不能使用該結果。 – user1836141
@ user1836141 true,如果該文件不存在或不是精靈,則可以在使用ldd之前進行檢查,同時注意其他任何命令都會有相同的問題。 – iabdalkader
有一個名爲'readelf -d'的命令,它檢查elf文件的動態部分,但不幸的是,即使沒有動態部分,它也會返回0。否則它可能是解決方案。另一個可能的解決方案是使用'readelf -h'來列出精靈標題部分,然後grep輸出...這又一次......不是很漂亮,但可能比其他人更可靠......我不知道......希望我能得到一些更好的解決方案。 – user1836141