zoukankan      html  css  js  c++  java
  • 编译OpenGL代码时发生 Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed! 错误的解决方案

    注:本解决方案适用于使用N卡的PC

          出现该错误 , 一般是由于开源的nouveau驱动和Nvidia专有驱动冲突导致的 。在解决该问题时 , 尝试过卸载 N 卡专有驱动 , 仅使用开源nouveau驱动 , 

    这样做以后这个错误是没有了, 但是OpenGL代码执行起来以后出现了各种问题 , 对 shader 支持也不好 , 使用的时候会提示 仅支持低版本的 GLSL , 通过

    调用 glutInitContextVersion 指定了 OpenGL 版本后 错误提示没有了 , 但是程序还是不能正常工作 。 最后选择卸载 nouveau , 转而使用 N 卡 专有驱动 。

      卸载 nouveau 驱动的 步骤如下:

        

    Before starting, you might want to know that nouveau is a project which aims to develop open source drivers for Nvidia cards. When you install Ubuntu, it detects your card and installs these drivers.
    
    Please note that, nouveau drivers manual removal is required only if you are going to install the propreitary nvidia drivers yourself. If this is not the case then directly install the required graphic drivers from System->Administration->Hardware drivers. Its the recommended and the most convenient way available.
    
    For our little endeavour, here is what we are going to do.
    
        We'll blacklist all the culprit modules,
        remove all the nvidia* packages and
        as an extra step we may have to update the initramfs disk because it could be configured to load the modules at startup.
    
    1) Blacklist the modules. Open the blacklist.conf file.
    
        [shredder12]$ sudo vim /etc/modprobe.d/blacklist.conf
    
    add the following modules in the file.
    
        blacklist amd76x_edac #this might not be required for x86 32 bit users.
        blacklist vga16fb
        blacklist nouveau
        blacklist rivafb
        blacklist nvidiafb
        blacklist rivatv
    
    Save the file and exit.
    
    2) Remove all the nvidia* packages
    
        [shredder12]$ sudo apt-get remove --purge nvidia*
    
    3) Once you are done with the steps above, reboot, stop the display manager and try to install nvidia drivers.
    
    Press Ctrl-Alt-F1. Once you are in the text mode, stop the display manager. This will end all the applications, so you better close them yourself before completing this step.
    
    To stop the display manager use the following command
    
        [shredder12]$ sudo /etc/init.d/gdm stop
    
    gdm is for gnome display manager. If you are using kde then use “kdm”.
    
    Now, run the driver package that you downloaded from Nvidia’s website.
    
        [shredder12]$ sudo ./NVIDIA-Linux-x86-260.19.44.run
    
    4) If you still get the error related to nouveau drivers then you are probably required to update the initramfs disk. Probably it might be configured to load the nouveau drivers. Don't reboot or poweroff, run this command to update the initramfs disk.
    
        [shredder12]$ sudo update-initramfs -u
    
    Now reboot and repeat the step 3. This time things should go smoothly.
    

       换上了专有驱动后 , 在 编译选项中 指定 -L/usr/lib/nvidia-xxx/ , 让链接器链接专有驱动提供的OpenGL库 , 问题解决 。

  • 相关阅读:
    osgEarath中elevation的tms切片写法
    3D数据格式
    osgearth调试源码无法打断点问题解决
    在软件中无法选择已经安装字体的解决方案
    [vb+mo] visual baisc 6.0 基于mapobjects 2.4 开发的数字化校园电子地图
    编译osg的vrml插件
    安全漏洞之grafanacve_2021_43798
    apk反编译工具dex2jar
    磁盘空间告急
    WEB漏洞扫描工具之OWASP ZAP
  • 原文地址:https://www.cnblogs.com/wowk/p/4350520.html
Copyright © 2011-2022 走看看