2
在Linux上构建共享库。库“.so”已成功创建,但是当我试图将其链接到测试应用程序(带有空主)并运行可执行文件时,出现了分段错误:“Segmentation error(cure dumped)”使用共享库时的分段错误
when我试着用GDB调试,并检查我得到这个输出回溯:
Program received signal SIGSEGV, Segmentation fault.
0x0073d5df in std::_Rb_tree_decrement(std::_Rb_tree_node_base*)() from /usr/lib/libstdc++.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.12.1-4.i686 libgcc-4.4.5-2.fc13.i686 libstdc++-4.4.5-2.fc13.i686 zlib-1.2.3-23.fc12.i686
(gdb) backtrace
#0 0x0073d5df in std::_Rb_tree_decrement(std::_Rb_tree_node_base*)() from /usr/lib/libstdc++.so.6
#1 0x0012d70c in ??() from /opt/cuda/lib/libcudart.so.3
#2 0x0012df0c in ??() from /opt/cuda/lib/libcudart.so.3
#3 0x0012c88a in ??() from /opt/cuda/lib/libcudart.so.3
#4 0x00121435 in __cudaRegisterFatBinary() from /opt/cuda/lib/libcudart.so.3
#5 0x005d7bfd in __sti____cudaRegisterAll_55_tmpxft_00000fe6_00000000_26_MonteCarloPaeo_SM10_cpp1_ii_3a8af011()
() from libsharedCUFP.so
#6 0x005db40d in __do_global_ctors_aux() from libsharedCUFP.so
#7 0x005a8748 in _init() from libsharedCUFP.so
#8 0x008abd00 in _dl_init_internal() from /lib/ld-linux.so.2
#9 0x0089d88f in _dl_start_user() from /lib/ld-linux.so.2
林不熟悉gdb调试,这是第一次我试着在Linux上构建一个共享库,但在我看来,它与图书馆动态链接有关。
如果有人对此错误有任何想法并可以帮助我,我将不胜感激。
实际上在我的共享库中链接CUDA对象(使用NVCC编译),出于某种原因某些功能调用不起作用。我能找到的唯一解决方案是分离cuda文件并将其构建为除.so之外的静态库。无论如何感谢您的帮助。 – user665130 2011-04-16 00:18:44