[英]GDB “cannot open shared object file” Issue
我已經讀過gdb說“無法打開共享對象文件”,並且gdb無法打開共享對象文件,並按照說明進行操作。
我有一個鏈接到共享庫文件( /zzz/yyy/xxx.so
)的二進制文件。 在將LD_LIBRARY_PATH
設置為/zzz/yyy/
並運行不帶GDB的二進制文件后,它執行得很好。
但是,當我嘗試使用GDB調試此二進制文件時,GDB說:
error while loading shared libraries: xxx.so: cannot open shared object file: No such file or directory
我已經有(在.gdbinit中設置):
(gdb)show env LD_LIBRARY_PATH
LD_LIBRARY_PATH = "/zzz/yyy/"
和
(gdb) show solib-search-path
The search path for loading non-absolute shared library symbol files is "/zzz/yyy/".
在我的系統中:
% printenv LD_LIBRARY_PATH
/zzz/yyy
GDB仍然找不到此共享庫的其他可能原因是什么?
但是,當我嘗試使用GDB調試此二進制文件時,GDB表示:加載共享庫時出錯:xxx.so:無法打開共享庫文件:沒有這樣的文件或目錄
您誤會了:不是GDB這么說,而是動態加載程序。 GDB本身並不關心LD_LIBRARY_PATH
設置為什么,它只是運行您的程序。 但是您的程序無法運行。
最常見的原因:您正在~/.cshrc
中重新設置LD_LIBRARY_PATH
,並且GDB在單獨的shell中運行程序,並且該shell讀取了.cshrc
,因此您的程序在錯誤的環境下執行。
解決方法是使.cshrc
不在非交互式shell中設置LD_LIBRARY_PATH
。 參見例如這個答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.