关于解决linux图形系统的一些疑难杂症

在网上有很多诸如 _glapi_tls_Dispatch undefined 的问题。有人说把gl库恢复就好了,有人则说重做系统。而且基本上无一例外的,这个问题究竟如何产生,根本原因在哪里,解决的思路和有效的方法到底是什么,并没有什么好的解释。

 

我是在ubuntu发行版上遇到这个问题,当时是下载了mesa3d的源码包,并且用默认的configure进行了配置,make,和install。之后就遇到图形界面无法启动,之后查看x server的log发现了 glapi_tls_Dispatch未定义的错误提示。

 

在网上多方查找原因无果之后,根据日志信息,找到调用该函数出错的intel965驱动文件。发现保存的路径下面所有的文件都未被更新。而mesa编译后是应该更新这些驱动的。用ldd和nm查看该文件也发现确实无法找到glapi_tls_Dispatch的实现。

 

从这一点可以看出,从源码编译的mesa3D并未被正确的安装配置。在mesa3D的站点上看到,使用默认的配置将会把mesa3D的安装路径定为/usr/local/lib。但是ubuntu自带的mesa库和dri,在我的系统中被配置到了/usr/lib/x64-xxxxxxx 路径下。从源码编译的mesa3D虽然没能覆盖原有的mesa库和dri驱动,但是依然使得其它的文件被更改。这显然是最糟糕的一种情况:不同版本的不能互相兼容的多个库并存。

 

找到问题的根本原因,其实解决起来就很容易了。既然是mesa库编译后安装不正确导致的,手动copy /usr/local/lib下编译好的dri驱动文件到ubuntu系统默认的dri路径下,再重新定义mesa库的安装路径,重新make & make install 即可。

 

这个案例告诉我们ubuntu虽好,但是做伸手党是有代价的。上次更新python版本也出现了类似的问题。用linux就得不断的折腾,这个平台不是给一般用户使用的,真正可以开封即食的美味在linux的世界并不存在。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:5   其中:访客  4   博主  1

  1. avatar 麦加C 5

    不过还好搞定了。从google到的内容上看更多的人没有搞定这类问题,startx一直失败。

    View Comment
  2. avatar 段永明

    太虐心

    View Comment
  3. avatar Jet 5

    其实ln -s 一下lib目录过去就好了

    View Comment
    • avatar 大菠萝 5

      @Jet 也是,不过以后系统升级有得烦。编译安装比较稳妥。而且开发的时候不至于找不到库还得重指定。

      View Comment