2012-04-16 64 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