Libraries

如何跟踪庫載入?

  • June 11, 2018

我有依賴於連結到 libboost 1.67 的庫的程序,該庫安裝在系統中。當我啟動它時,我有一個libboost_system.so.1.58不存在的錯誤。LD_PRELOAD並且LD_LIBRARY_PATH未設置。

lddtree執行不會將此庫顯示為依賴項,但ldd會顯示。

如何從需要庫的位置進行跟踪?

如果在 GNU 系統上,請嘗試使用以下命令執行您的應用程序:

LD_DEBUG=libs your-application

有關LD_DEBUG=help更多選項,請參閱 或man ld.so

如果程序使用 dlopen() 手動載入 libboost_system,您可能能夠使用ltrace找到它在哪裡執行此操作,以查看它是否正在呼叫 dlopen(),也許 gdb 在呼叫 dlopen() 時設置斷點,然後生成堆棧回溯。(另見latrace。)

引用自:https://unix.stackexchange.com/questions/448964