2012-11-07 19 views

回答

8

nm <binary>會告訴你哪些符號被定義,更重要的是在這裏指定哪些符號被給定的二進制使用。您可以通過檢查輸出中列出pollselect中的哪一個來得到保守的猜測。

您可能會發現您的應用程序與兩者都鏈接。在這種情況下,它可能會作出運行時間決定,哪一個要調用,如果你運行它,你將無法輕易地知道它實際使用哪一個。

根據構建二進制文件的方式,您可能必須運行nm以及-D標誌;或者您可能需要確保您沒有指定-D。嘗試兩種方式。

如果程序使用共享庫,實際調用pollselect可能位於它正在使用的庫中。在這種情況下,您可能需要挖掘其所有庫上運行的nm。您可以通過在readelf --dynamic的輸出中查找NEEDED條目來找出程序使用ldd的程序庫,或者該程序不起作用。

如果二進制是比您當前運行在不同的平臺上構建,然後ldd將無法​​正常工作,也可能需要使用的binutils一個交叉編譯器編譯得到一個版本的nm會爲你工作。

+0

感謝您的完整答案, – wei

相關問題