2012-08-27 32 views
6

我有涉及項目如何調試包裝在libtool腳本中的程序?

  • 共享庫,即:mylib.so
  • (測試)計劃使用這些共享庫,即:test_mylib

當我嘗試運行test_mylibgdb,它打印:

"test_mylib": not in executable format: File format not recognized 

當我使用真正的程序(.libs/test_mylib),而不是直接,但它仍然抱怨:

.libs/test_mylib: can't load library 'libhello.so.0' 

我怎樣才能運行GDB調試我的程序?

回答

9

這是我遇到了幾天前的問題,目前還沒有通用的答案。只有特殊情況。以下是我在本頁上找到的答案:http://www.gnu.org/software/libtool/manual/html_node/Debugging-executables.html

在程序安裝之前,系統不知道在哪裏查找共享對象。他們通常位於其源文件夾的.libs子目錄中。

Libtool程序生成一個方便的腳本,使調試實際安裝完成之前(誰願意之前安裝錯誤的軟件,調試它後?)

幸運的是,生成的腳本提供了一個幫助這個:

libtool --mode=execute gdb test_mylib 
+0

在OS X機器上,我得到'error:libtool:未知選項字符\' - 'in:--mode = execute'(我的解決方法是安裝到前綴,但可能是--disable-shared提到以下簡單說明從長遠來看) – unhammer

3

由libtool的文檔推薦的解決方案是使用靜態開發過程中鏈接,正如我在描述下:Build libtool application with static linking to local components

爲此,請使用./configure腳本的--disable-shared選項。

例如:

./configure --enable-debug --disable-shared 

現在生成的可執行文件是直接可執行的二進制,而不是一個libtool的腳本。

這還有大約減半構建時間的好處。

+0

沒有'--disabled-shared'解決方案的其他背景信息:https://autotools.io/libtool/wrappers.html和https://www.gnu.org/software/libtool /manual/html_node/Debugging-executables.html – nobar

相關問題