程序未由于链接中的问题而无法运行



我在执行二进制方面遇到麻烦。该程序正在接收细分故障。过滤是GDB的输出

gdb a.out
(gdb) run
Starting program: a.out
Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb)

然后我使用了NM实用程序

nm -u a.out
      U Allocatememory

我发现许多符号未定义。实际上,通过链接许多其他.So来获得此二进制。我在.so

之一上做了NM
nm libmylib.so
00000000000de6f  T Allocate memory

该程序与上述libmylib链接。链接过程中我没有任何错误。

g++ -m32  -shared -Wl -o a.out -lmylib 

但是,没有-shared选项,我会收到以下错误

/usr/bin/ld: <path_to_bin>/a.out: hidden symbol `__dso_handle' in 
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/32/crtbegin.o is referenced by DSO
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
*** Error code 1

有什么问题?有人可以建议我如何来吗?预先感谢

g -m32 -shared -wl -o a.out -lmylib

这将构建A 共享库,名为a.out。不要这样做:共享库无法直接可执行。

您需要这样做:

g++ -m32 main.cc -o a.out -lmylib

其中main.cc包含实际的main函数。

相关内容

  • 没有找到相关文章

最新更新