Libraries
如何跟踪庫載入?
我有依賴於連結到 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。)