2012-11-16 32 views
1

我必須使用一個共享庫的調試版本(在通過apt-get install libpcap0.8-dbg安裝在Ubuntu特別libpcap的)......我建立我的可執行文件,並反對鏈接,所有的作品(與驗證的調試版本ldd)...但是當我運行可執行文件時,我得到了段錯誤...動態鏈接器無法加載庫。使用objdump我看到Dynamic section是空的:如何使用共享對象

$objdump -p libpcap.so.1.1.1 
... 
Dynamic section: 

$ 

我認爲在ELF共享對象的Dynamic section一些領域是強制性的......那麼,爲什麼這部分是空的?也許有正確加載它的不同方法?

回答

2

運行老實說我不使用Ubuntu的,但據我所知調試包不包含完整的版本庫或二進制文件,從他們剛剛剝離調試信息。這些只是由eu-strip或類似工具切出的部分。你不應該聯繫他們。事實上,根本不需要重新連接你的應用程序。如果工具無法自行完成,那麼您應該指示gdb,valgrind或其他調試信息使用者在實際調試之前閱讀它們,就這些了。

+0

庫的調試版本也有充分.text,.data和等等部分,不只調試一個,所以我認爲它與非調試版本相同,但是用調試syms編譯。 – MirkoBanchi

+1

你可能想看看這個bug:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=462456 –

+0

謝謝...這是非常有用的。 – MirkoBanchi

0

你可以嘗試用LD_LIBRARY_PATH=/usr/lib/debug/

+0

這個問題不是關於動態鏈接器沒有找到庫...它加載它時段錯誤(我用LD_DEBUG =所有env變量驗證)。我也試過LD_PRELOAD,但結果是一樣的。 – MirkoBanchi

+0

然後卸載和重新安裝'libpcap0.8-dbg'或可能與編譯'CFLAGS = -g'上游'libpcap' –