簡體   English   中英

鏈接器問題還是其他? 動態加載的庫

[英]linker issue or other? dynamically loaded lib

我的程序加載了一個動態庫,但是在嘗試加載它之后(它似乎沒有加載,或者至少在加載時出現了問題。free free()拋出錯誤,我注釋掉了這一行。)

我在gdb中得到以下內容。

Program received signal SIGSEGV, Segmentation fault.
__strlen_ia32 () at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:99
99  ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
    in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S

我將如何解決這個問題?

編輯1:

上面的問題是由於我沒有應有的xml文件。

這是我掩蓋的最初顯示的錯誤。

(gdb) s
__dlopen (file=0xbfffd03c "/usr/lib/libvisual-0.5/actor/actor_AVS.so", mode=1)
    at dlopen.c:76
76  dlopen.c: No such file or directory.
    in dlopen.c
(gdb) bt
#0  __dlopen (file=0xbfffd03c "/usr/lib/libvisual-0.5/actor/actor_AVS.so", 
    mode=1) at dlopen.c:76
#1  0xb7f8680d in visual_plugin_get_references (
    pluginpath=0xbfffd03c "/usr/lib/libvisual-0.5/actor/actor_AVS.so", 
    count=0xbfffd020) at lv_plugin.c:834
#2  0xb7f86168 in plugin_add_dir_to_list (list=0x804e428, 
    dir=0x804e288 "/usr/lib/libvisual-0.5/actor") at lv_plugin.c:609
#3  0xb7f86b2b in visual_plugin_get_list (paths=0x804e3d8, 
    ignore_non_existing=1) at lv_plugin.c:943
#4  0xb7f9c5db in visual_init (argc=0xbffff170, argv=0xbffff174)
    at lv_libvisual.c:370
#5  0x080494b7 in main (argc=2, argv=0xbffff204) at client.c:32
(gdb) quit
A debugging session is active.

    Inferior 1 [process 3704] will be killed.

Quit anyway? (y or n) y
starlon@lyrical:client$ ls /usr/lib/libvisual-0.5/actor/actor_AVS.so 
/usr/lib/libvisual-0.5/actor/actor_AVS.so
starlon@lyrical:client$ 

該文件存在。 不知道怎么了。 不確定提供什么代碼。

Edit2:有關文件的更多信息。 權限還可以。

816K -rwxr-xr-x 1根根814K 2011-11-08 15:06 /usr/lib/libvisual-0.5/actor/actor_AVS.so

您沒有告訴它什么是動態庫。

如果它是免費的動態庫-或您可以訪問其源的庫-您可以編譯它並在啟用調試的情況下使用它。

幾個Linux發行版-特別是Debian和Ubuntu-提供了許多庫的調試版本(例如GLibc,GTK,Qt等),因此您無需重建它們。 例如,Debian具有libgtk-3-0軟件包(主要是二進制庫), libgtk-3-dev的開發文件(標libgtk-3-0-dbg )和libgtk-3-0-dbg (該libgtk-3-0-dbg的調試版本)。圖書館)。 您需要適當地設置LD_LIBRARY_PATH才能使用它(因為它在/usr/lib/debug/usr/lib/libgdk-3.so.0.200.1 )。

有時,使用系統庫的調試變體可以幫助您在自己的代碼中查找錯誤。 (當然,您還需要使用-g -Wall自己的代碼進行編譯)

原來,這是由於硬盤故障。 看來我需要一個新的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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