Linux下安装QT的剧痛经历 联系客服

发布时间 : 星期一 文章Linux下安装QT的剧痛经历更新完毕开始阅读

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:43:11: 附注: 备选需要 1 实参,但提供了 2 个

In file included from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h: 在成员函数?QTJSC::JSGlobalObject::JSGlobalObjectData* QTJSC::JSGlobalObject::d() const?中: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:270:100: 错误:从类型?QTJSC::JSVariableObject::JSVariableObjectData* const?到类型?QTJSC::JSGlobalObject::JSGlobalObjectData*?中的 static_cast 无效

In file included from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h: 在成员函数?void QTJSC::JSGlobalObject::addStaticGlobals(QTJSC::JSGlobalObject::GlobalPropertyInfo*, int)?中:

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:327:18: 错误:?struct QTJSC::JSGlobalObject::JSGlobalObjectData?没有名为?registerArray?的成员

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:328:48: 错误:?struct QTJSC::JSGlobalObject::JSGlobalObjectData?没有名为?registerArray?的成员 In file included from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h: 在成员函数?QTJSC::JSGlobalObject::JSGlobalObjectData* QTJSC::JSGlobalObject::d() const?中: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:270:103: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type] make[1]: *** [obj/release/JSBase.o] 错误 1 make[1]:正在离开目录

`/home/ligo/qttools/qt/qt-everywhere-opensource-src-4.8.1/src/script' make: *** [sub-script-make_default-ordered] 错误 2

shit!搞这玩意儿的人都是吃屎的,难道也像我开发软件一样不做测试的吗? 这个问题很难找,通过bing才搜索到一个网

址 http://archive.linuxfromscratch.org/mail-archives/blfs-dev/2012-April/022605.html,下载了一个补丁 qt-everywhere-opensource-src-4.8.0-gcc-4.7.patch(需要在网页上往回到补丁列表中下载)。

patch文件如何用?又犯难了,只好再搜索,查到

http://wenku.http://www.china-audit.com//view/7bce1c1910a6f524ccbf8520.html,原来直接用patch命令就行。以前没有用过,先在命令行下直接输入patch回车,结果显示: 程序“patch”尚未安装。 您可以使用以下命令安装: apt-get install patch

原来在root用户下,apt-get前无需要sudo!好,我也直接输入apt-get install patch,不一会儿安装完毕。

看了一下,这个命令好像不太好用,这个patch文件也不大,就打开来看,内容很简单,就是需要修改2个文件,每个都是去掉2行添加一行,我直接去修改了对应的文件,然后重新configure,再make。在configure的过程中,中间好像是有一些错误,但最后还是成功了。

现在还在make中,没事,上QT看了一下 http://qt-project.org/doc/qt-4.8/install-x11.html,多简单。不到12点开始make,2点左右结束,然后: make install

现在都2点多了,终于结束了,关键是没有报错!~-~

发现,在已安装的程序里没有QT,汗···,只好自己找到安装目录,然后进入Bin目录,里面还是没有qtCreator!双击启动designer,结果画面出来了,但是惨不忍睹,界面一团糟,看不清字,大部分是中文,但字不清楚,翻译严重缺失,字间距可以放个窗口了,晕 难道是系统字体的问题?我把系统语言改成英文,然后重启虚拟机,再启动qtdesigner,结果还是一样!启动qtconfigure,结果界面也一样糟糕,而且似乎找不到修改语言的选项,哎,梦一场啊。 5.10:

昨天晚上没有加班,下班走人,今天照样上班。本来预报的是周3、4、5、6都有雨,结果今天都周4了,也没见到雨,可能预报天气的在忽悠我等吧。

安装的qt不能用,我毫无办法了。但是下载的那个sdk一直没有安装上去,就想拿它再试试。昨天一直往虚拟机上拷贝,结果无论如何都拷贝不上去,没办法,昨天快下班时,在本机上开了个www服务器,然后在虚拟机上登录www服务器才算是把qtsdk给传过去了。 刚刚安装,直接运行它说是没有权限,就按照nokia上的说明,先修改什么模式(注:这两天都是用root用户登录的系统): chmod u+x

然后再运行它,成功了,出现了安装向导,梦寐以求啊。把所有内容全部选上,然后下一步,不多时,安装完毕。直接启动qtcreator,新建一个桌面工程,包含原始的代码,直接构建,结果如下:

:-1: 错误:cannot find crt1.o: No such file or directory :-1: 错误:cannot find crti.o: No such file or directory :-1: 错误:collect2: error: ld returned 1 exit status

晕,看来crtx.o的踒是必需设置的了,但要如何设置呢?根

据 http://qt-project.org/doc/qt-4.8/install-x11.html的提示,再加上前面的错误的解决,决定添加一个环境变量:

setenv LIBARAY_PATH /usr/lib/i386-linux-gnu 结果提示“setenv: command not found”

搜索添加环境变量,到http://blog.csdn.net/guolele2010/article/details/6310904,按照其第三个方法“所有用户的全局设置”,我直接用gedit打开 /etc/profile 文件,然后在最后添加了一行:

export LIBRARY_PATH=/usr/lib/i386-linux-gnu 保存,然后在命令行中: source /etc/profile 再echo #LIBRARY_PATH

有显示了,正是我设置的路径,再构建工程,还是一样的错误,然后重启qtcreator,再构建,仍然不变!晕~~~

我再把这个路径加入到PATH变量中,同样的方法,加到LIBRARY_PATH的后面,结果仍然是相同的错误。难道需要重启?汗!真的需要重启虚拟机!重启之后,直接打开这个工程,然后编译顺利通过,然后运行,出窗口了!

到此,qt总算是成功了,不过可能是拐了8个360度的弯罢了。后面还有ffmpeg需要安装,可能又是一项大工程。

从svn上下载最新的ffmpeg,然后拷贝到虚拟机上,进入目录,也同样: ./configure

结果提示 bash: ./configure: Permission denied 说是没有执行模式,所以需要修改一下

(http://blog.sina.com.cn/s/blog_5ff8e88e010110aj.html): chmod +x configure 然后再执行,结果:

bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

搜索到 http://hi.http://www.china-audit.com//zhangtqqq/blog/item/87a511331ecd405dad4b5f1e.html,按照上面的方法,直接调用dos2unix命令,结果显示没有,就安装它: apt-get install dos2unix

很小,三两下就安装完了,然后:

dos2unix configure ./configure 提示:

yasm not found, use --disable-yasm for a crippled build 然后再:

./configure --disable-yasm 不一会儿完成。然后: make

大约10分钟之后提示:

libavcodec/x86/h264_qpel_mmx.c: Assembler messages:

libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' make: *** [libavcodec/x86/dsputil_mmx.o] Error 1 在baidu上搜索不到,在bing上搜索

到 http://comments.gmane.org/gmane.comp.handhelds.openembedded/51922,上面列举了多个bug,其中有一个就是这个,点它后面的continue查看这个bug的完整信息,网址为http://permalink.gmane.org/gmane.comp.handhelds.openembedded/51954,实际上通过补丁解决这个问题的,这里还按照上次的补丁做法,直接用gedit打开这个文件来修改,但这次有点麻烦,本来提示出错的行是1294、1298、964,但实际上这个文件只有1201行!

猜测应该是由于宏定义引起的行数变化,没有办法,只有完全依照这个网上的方法来修改了。文件修改了4个位置,都是把“g”改成了“rm”,再继续make,时又报错: ffmpeg.c: At top level:

ffmpeg.c:248:21: warning: ?sws_flags? defined but not used [-Wunused-variable] CC cmdutils.o

cmdutils.c:43:21: fatal error: version.h: No such file or directory compilation terminated. make: *** [cmdutils.o] Error 1