1.GConf-WARNING
(process:3867): GConf-WARNING **: 15:15:05.359: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Gtk-Message: 15:15:05.368: Failed to load module "canberra-gtk-module"
问题原因:su/su root
命令仅仅切换为root用户,获取了root权限,当前工作的shell环境并没有变;而su -/ su - root
与su/su root不同点在于,增加了切换shell环境的功能,通过打印环境变量可以看出shell环境的变化;此时还漏了sudo
这个小东西,sudo的功能虽然是暂时的,但是它也可以获取root权限的同时切换shell环境。
解决办法:使用su -方式切换为root用户后,再去运行程序。
2.X Error
X Error: BadAccess (attempt to access private resource denied) 10
Extension: 130 (MIT-SHM)
Minor opcode: 1 (X_ShmAttach)
Resource id: 0x15e
X Error: BadShmSeg (invalid shared segment parameter) 128
Extension: 130 (MIT-SHM)
Minor opcode: 5 (X_ShmCreatePixmap)
Resource id: 0x460000c
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x460000d
问题原因:没有导出QT_X11_NO_MITSHM环境变量。
解决办法:如果直接在终端执行export QT_X11_NO_MITSHM=1
,则只在当前终端有效,下次再次打开终端就需要重新导出环境变量,比较麻烦。好点的方法就是进入当前用户的宿主目录下,vi ~/.bashrc
,在末尾添加export QT_X11_NO_MITSHM=1
,这样进入终端切换到了这个用户就会自动导出该环境变量。
3.一个愚蠢的问题
In file included from /usr/include/qt4/QtCore/qnamespace.h:45:0,
from /usr/include/qt4/QtCore/qobjectdefs.h:45,
from /usr/include/qt4/QtCore/qobject.h:47,
from /usr/include/qt4/QtCore/QObject:1,
from MyObject.h:5,
from main.cpp:1:
/usr/include/qt4/QtCore/qglobal.h:2901:42: error: expected initializer before ‘QtCoreModule’
typedef QtValidLicenseFor##x##Module Qt##x##Module;
问题原因:我太菜了
解决办法:在定义类的时候,加上分号。