簡體   English   中英

GDB“無法打開共享庫文件”問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM