这几天学习要用到LINUX,为了学习聊天两不误,就到官网下了一个LINUX版的QQ,装到UBUNTU上。结果用的时候程序常自动关掉。没办法只好用网络搜索大法。找到如下答案:

原文地址:http://blog.sina.com.cn/s/blog_6449050e0100gm1k.html
在QQ网站下载linux的安装包后(linuxqq_v1.0.2-beta1_i386.deb),安装使用,发现QQ经常崩溃。
解决方法如下:
sudo gedit /usr/bin/qq
在第二行加入: export GDK_NATIVE_WINDOWS=true

即全文修改为:

#! /bin/sh
export GDK_NATIVE_WINDOWS=true
cd /usr/share/tencent/qq/
./qq

保存后退出,重启QQ
在网上搜了一下GDK_NATIVE_WINDOWS=true参数到作用,但是没看太明白。。。
原文地址:http://blogs.gurulabs.com/dax/2009/10/what-gdk-native.html
GDK has been rewritten to use 'client-side windows'. This means that GDK maintains its own window hierarchy and only uses X windows where it is necessary or explicitly requested. Some of the benefits of this change are
  • Reduced flicker
  • The ability to do transformed and animated rendering of widgets
  • Easier embedding of GTK+ widgets, e.g. into Clutter scene graphs


Launching an app with GDK_NATIVE_WINDOWS=1 application turns off this feature. This is needed if the application manipulates the windows it creates using direct X API calls or a mixture of X API and GDK instead of just going through GDK. When using "client-side windows" all window manipulation by an application must go through GDK. Adobe needs to update Acroread to be compatible with this feature.

原因: GTK是一个API库,以前应该是基于X api的,现在GTK重写了,更好用,结构没有变,只保留了一部分必要的X函数。很多应用程序用到了X的api,直接的或者间接的,但是由于GTK不再完全依赖于X api,而这些应用又都是基于GTK的,所以当应用程序使用X的函数时会出现问题。
    一切问题都是由于GTK的重写引起的。所以老的版本不会有这样的问题。GTK为了解决兼容的问题,增加了一个选项GDK_NATIVE_WINDOWS=1,这样就可以使用原始的GTK环境了。