调试ld,“ld.so检测到不一致”

时间:2014-03-21 16:53:26

标签: linux shared-libraries ld package-managers

我正在尝试使用名为GLV的窗口小部件库来处理我正在开发的应用程序。我正在运行Linux Mint 17.我安装了所有库,并且我已经成功构建了GLV库,但是当我尝试运行其中一个构建的样本时,我得到了这个共享库错误。

Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions:
Assertion `needed != ((void *)0)' failed!

任何人都可以帮我找出共享库中的不一致之处吗?

更多信息

在README文件中,它说

GLV requires only OpenGL, GLU, and GLEW (Linux only). There are 
no other dependencies, unless a window binding is used, such as GLUT."

当我从源代码安装GLEW时,它会打印一份已安装的文件列表。

$ sudo make install
install -d -m 0755 /usr/include/GL
install -m 0644 include/GL/wglew.h /usr/include/GL/
install -m 0644 include/GL/glew.h /usr/include/GL/
install -m 0644 include/GL/glxew.h /usr/include/GL/
install -d -m 0755 /usr/lib64
install -m 0644 lib/libGLEW.so.1.8.0 /usr/lib64/
ln -sf libGLEW.so.1.8.0 /usr/lib64/libGLEW.so.1.8
ln -sf libGLEW.so.1.8.0 /usr/lib64/libGLEW.so
install -m 0644 lib/libGLEW.a /usr/lib64/
install -d -m 0755 /usr/lib64
install -d -m 0755 /usr/lib64/pkgconfig
install -m 0644 glew.pc /usr/lib64/pkgconfig/

我检查了是否安装了一个glew软件包,但看起来没有。

$ aptitude search glew
p   glew-utils                                                                       - OpenGL Extension Wrangler - utilities                                                     
p   glew-utils:i386                                                                  - OpenGL Extension Wrangler - utilities                                                     
p   libglew-dev                                                                      - OpenGL Extension Wrangler - development environment                                       
p   libglew-dev:i386                                                                 - OpenGL Extension Wrangler - development environment                                       
v   libglew1.5-dev                                                                   -                                                                                           
v   libglew1.5-dev:i386                                                              -                                                                                           
v   libglew1.6-dev                                                                   -                                                                                           
v   libglew1.6-dev:i386                                                              -                                                                                           
pi  libglew1.8                                                                       - OpenGL Extension Wrangler - runtime environment                                           
p   libglew1.8:i386                                                                  - OpenGL Extension Wrangler - runtime environment                                           
p   libglewmx-dev                                                                    - OpenGL Extension Wrangler MX - development environment                                    
p   libglewmx-dev:i386                                                               - OpenGL Extension Wrangler MX - development environment                                    
v   libglewmx1.5-dev                                                                 -                                                                                           
v   libglewmx1.5-dev:i386                                                            -                                                                                           
v   libglewmx1.6-dev                                                                 -                                                                                           
v   libglewmx1.6-dev:i386                                                            -                                                                                           
p   libglewmx1.8                                                                     - OpenGL Extension Wrangler (Multiple Rendering Contexts)                                   
p   libglewmx1.8:i386                                                                - OpenGL Extension Wrangler (Multiple Rendering Contexts)   

我检查了GLU软件包的安装情况,但这里的一切看起来还不错。

$ aptitude search glu
p   celestia-glut                                                                    - real-time visual space simulation (GLUT frontend)                                         
p   celestia-glut:i386                                                               - real-time visual space simulation (GLUT frontend)                                         
p   cluster-glue                                                                     - Reusable cluster components for Linux HA                                                  
p   cluster-glue:i386                                                                - Reusable cluster components for Linux HA                                                  
p   cluster-glue-dev                                                                 - Development files for the cluster glue components                                         
p   cluster-glue-dev:i386                                                            - Development files for the cluster glue components                                         
p   freebsd-glue                                                                     - Emulate a FreeBSD build environment                                                       
i   freeglut3                                                                        - OpenGL Utility Toolkit                                                                    
p   freeglut3:i386                                                                   - OpenGL Utility Toolkit                                                                    
p   freeglut3-dbg                                                                    - OpenGL Utility Toolkit debugging information                                              
p   freeglut3-dbg:i386                                                               - OpenGL Utility Toolkit debugging information                                              
i   freeglut3-dev                                                                    - OpenGL Utility Toolkit development files                                                  
p   freeglut3-dev:i386                                                               - OpenGL Utility Toolkit development files                                                  
p   gambas3-gb-opengl-glu                                                            - Gambas opengl-glu component                                                               
p   gambas3-gb-opengl-glu:i386                                                       - Gambas opengl-glu component                                                               
p   gimp-gluas                                                                       - Lua environment plug-in for GIMP                                                          
p   gimp-gluas:i386                                                                  - Lua environment plug-in for GIMP                                                          
p   glue-schema                                                                      - LDAP schema files for the GLUE 1.3 and GLUE 2.0 Schema                                    
p   glue-sprite                                                                      - Simple command line tool to generate CSS sprites                                          
p   glurp                                                                            - GTK+ frontend to the Music Player Daemon (MPD)                                            
p   glurp:i386                                                                       - GTK+ frontend to the Music Player Daemon (MPD)                                            
p   glusterfs-client                                                                 - clustered file-system (client package)                                                    
p   glusterfs-client:i386                                                            - clustered file-system (client package)                                                    
p   glusterfs-common                                                                 - GlusterFS common libraries and translator modules                                         
p   glusterfs-common:i386                                                            - GlusterFS common libraries and translator modules                                         
p   glusterfs-dbg                                                                    - GlusterFS debugging symbols                                                               
p   glusterfs-dbg:i386                                                               - GlusterFS debugging symbols                                                               
p   glusterfs-examples                                                               - example files for the glusterfs server and client                                         
p   glusterfs-server                                                                 - clustered file-system (server package)                                                    
p   glusterfs-server:i386                                                            - clustered file-system (server package)                                                    
p   libcluster-glue                                                                  - Reusable cluster libraries (transitional package)                                         
p   libcluster-glue-dev                                                              - Reusable cluster components for Linux HA (transitional package)                           
p   libghc-gluraw-dev                                                                - Raw binding for the OpenGL graphics system                                                
p   libghc-gluraw-dev:i386                                                           - Raw binding for the OpenGL graphics system                                                
v   libghc-gluraw-dev-1.3.0.0-200bb:i386                                             -                                                                                           
v   libghc-gluraw-dev-1.3.0.0-9f9cf                                                  -                                                                                           
p   libghc-gluraw-doc                                                                - Raw binding for the OpenGL graphics system; documentation                                 
p   libghc-gluraw-prof                                                               - Raw binding for the OpenGL graphics system; profiling libraries                           
p   libghc-gluraw-prof:i386                                                          - Raw binding for the OpenGL graphics system; profiling libraries                           
v   libghc-gluraw-prof-1.3.0.0-200bb:i386                                            -                                                                                           
v   libghc-gluraw-prof-1.3.0.0-9f9cf                                                 -                                                                                           
p   libghc-glut-dev                                                                  - Haskell GLUT binding for GHC                                                              
p   libghc-glut-dev:i386                                                             - Haskell GLUT binding for GHC                                                              
v   libghc-glut-dev-2.4.0.0-233c0:i386                                               -                                                                                           
v   libghc-glut-dev-2.4.0.0-31a91                                                    -                                                                                           
p   libghc-glut-doc                                                                  - Haskell GLUT binding for GHC; documentation                                               
p   libghc-glut-prof                                                                 - Haskell GLUT binding for GHC; profiling libraries                                         
p   libghc-glut-prof:i386                                                            - Haskell GLUT binding for GHC; profiling libraries                                         
v   libghc-glut-prof-2.4.0.0-233c0:i386                                              -                                                                                           
v   libghc-glut-prof-2.4.0.0-31a91                                                   -                                                                                           
v   libglu-dev                                                                       -                                                                                           
v   libglu-dev:i386                                                                  -                                                                                           
v   libglu1                                                                          -                                                                                           
v   libglu1:i386                                                                     -                                                                                           
i   libglu1-mesa                                                                     - Mesa OpenGL utility library (GLU)                                                         
i A libglu1-mesa:i386                                                                - Mesa OpenGL utility library (GLU)                                                         
i A libglu1-mesa-dev                                                                 - Mesa OpenGL utility library -- development files                                          
p   libglu1-mesa-dev:i386                                                            - Mesa OpenGL utility library -- development files                                          
p   libgluegen2-build-java                                                           - Tool to automatically generate the Java and JNI code.                                     
p   libgluegen2-doc                                                                  - Tool to automatically generate the Java and JNI code.                                     
p   libgluegen2-jni                                                                  - Tool to automatically generate the Java and JNI code.                                     
p   libgluegen2-jni:i386                                                             - Tool to automatically generate the Java and JNI code.                                     
p   libgluegen2-rt-java                                                              - Tool to automatically generate the Java and JNI code.                                     
p   libgssglue-dev                                                                   - header files and docs for libgssglue                                                      
p   libgssglue-dev:i386                                                              - header files and docs for libgssglue                                                      
p   libgssglue1                                                                      - mechanism-switch gssapi library                                                           
p   libgssglue1:i386                                                                 - mechanism-switch gssapi library                                                           
v   libhugs-glut                                                                     -                                                                                           
v   libhugs-glut:i386                                                                -                                                                                           
p   libhugs-glut-bundled                                                             - A binding for the OpenGL Utility Toolkit                                                  
p   libhugs-glut-bundled:i386                                                        - A binding for the OpenGL Utility Toolkit                                                  
p   libkwinactiveglutils1abi3                                                        - library used by accellaration for the KDE window manager Active                           
p   libkwinactiveglutils1abi3:i386                                                   - library used by accellaration for the KDE window manager Active                           
p   libkwinglutils1abi3                                                              - library with OpenGL utilities for the KDE window manager                                  
p   libkwinglutils1abi3:i386                                                         - library with OpenGL utilities for the KDE window manager                                  
p   libmgl-glut5                                                                     - library for scientific graphs. (GLUT runtime library)                                     
p   libmgl-glut5:i386                                                                - library for scientific graphs. (GLUT runtime library)                                     
p   libmodglue1                                                                      - C++ library for handling of multiple co-processes                                         
p   libmodglue1:i386                                                                 - C++ library for handling of multiple co-processes                                         
p   libmodglue1-dev                                                                  - development files for a C++ library for handling of multiple co-processes                 
p   libnet-inet6glue-perl                                                            - glue module to make perl modules IPv6 ready                                               
p   libnet-sslglue-perl                                                              - add/extend SSL support for common perl modules                                            
p   libtaoframework-freeglut-cil-dev                                                 - Tao CLI binding for freeglut - development files                                          
p   libtaoframework-freeglut2.4-cil                                                  - Tao CLI binding for freeglut                                                              
p   mgltools-mglutil                                                                 - Molecular Graphics Laboratory utility collection                                          
i   python-configglue                                                                - Glues together optparse.OptionParser and ConfigParser.ConfigParser                        
p   python-django-configglue                                                         - Django commands for working with configglue generated settings                            
p   python-gluon                                                                     - High-level Python web development framework                                               
p   python3-configglue                                                               - Glues together optparse.OptionParser and ConfigParser.ConfigParser                        
v   xlibmesa-glu-dev                                                                 -                                                                                           
v   xlibmesa-glu-dev:i386                                                            -                                                                                           

2 个答案:

答案 0 :(得分:7)

  

Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion 'needed != ((void *)0)' failed!

这是glibc中的错误,或者是某个共享库中的损坏。 glibc代码如下:

  while (1)
  {
     ElfW(Vernaux) *aux;
     struct link_map *needed = find_needed (strtab + ent->vn_file, map);

     /* If NEEDED is NULL this means a dependency was not found
        and no stub entry was created.  This should never happen.  */
     assert (needed != NULL);
 ...

此时你的选择是:

  • 重新安装并验证所涉及的所有库的md5sums以排除磁盘损坏,并
  • 为glibc安装debuginfo包,并尝试了解哪个库和哪个符号版本正在触发断言,或者
  • 在Linux发行版的相应错误跟踪器中报告此内容。

设置LD_DEBUG=symbols,bindings甚至LD_DEBUG=all也可能会提供一些关于确切查找哪些符号的线索。

答案 1 :(得分:-2)

我有类似的错误。我所做的只是打开一个新的终端并再次运行python代码。

这对我有用。