2012-04-16 100 views
4

我調試一個C++程序:gdb「啓動程序在代碼126退出期間」。

gdb simplesearch.o 

然後GDB的創業成功:

(gdb) Reading symbols from /home/zwx/workspace/xapian/examples/simplesearch.o...done. 

但是,當我試圖運行:

(gdb) run 

GDB報告:

Starting program: /home/zwx/workspace/xapian/examples/simplesearch.o 
/bin/bash: /home/zwx/workspace/xapian/examples/simplesearch.o: cannot execute binary file 
/bin/bash: /home/zwx/workspace/xapian/examples/simplesearch.o: Success 
During startup program exited with code 126. 

有人有想法嗎?

回答

6

A .o文件不是一個程序,它是一個需要與庫鏈接來生成程序的對象文件。您可以使用gdb來檢查其中的代碼,但它不可運行(「無法執行二進制文件」消息)。你需要鏈接它來製作一個程序。也許像

g++ -o simplesearch simplesearch.o 

就足夠了,但沒有更多的信息,如果它需要更多的圖書館不僅僅是系統的C庫和C++運行時支持目前尚不清楚,等

+0

是。當我嘗試運行'gdb simplesearch'時(simplesearch是一個可運行爲./simplesearch的可執行文件)。然後gdb報告:「」/ home/zwx/workspace/xapian/examples/simplesearch「:不是可執行格式:文件格式無法識別。」 @geekosaur – stackunderflow 2012-04-16 01:47:38

+0

'文件simplesearch'報告是什麼? – geekosaur 2012-04-16 01:53:15

+0

仍然是「」/ home/zwx/workspace/xapian/examples/simplesearch「:不是可執行格式:文件格式無法識別。」 – stackunderflow 2012-04-16 01:54:31