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

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

个 http://groups.google.com/group/eql-user/browse_thread/thread/75c2ed7215fd19e4/94a770d0de4e8bce?lnk=raot:

> I fixed this by adding #include to some sourse and header > files.

This seems to be the standard way of solving this problem.

不会是让我要修改头文件吧?打开 /usr/local/include/gmp.h,然后在开头处添加了一行: #if defined (__cplusplus)

#include /* for std::istream, std::ostream, std::string */ #endif

#include // 这一行是我添加的

然后再继续make,结果一样的错误!仿照之前的方法,从网上直接安装gcc: sudo apt-get install gcc-4.7.0 结果提示没有这个软件包。

按照上面的方法,实际上是c-lang.c(位于gcc的安装目录中的gcc目录)包含tree.h,tree.h包含double-int.h,double-int.h包含gmp.h,所以在double-int.h包含gmp之前,添加了一行:

/* added by Ligo, 2012.05.08, for std::FILE has not been declared in gmp.h */ #include

#ifndef GENERATOR_FILE #include #endif

#include \

然后再直接make。仍然是相同的错误,搜索

到 http://gmplib.org/list-archives/gmp-bugs/2007-August/000820.html,有一段如下: > I think the correct way to fix is: >

> #if defined (__cplusplus) > extern \

> #ifdef _GMP_H_HAVE_FILE > using std::FILE;

> #endif > #endif >

> But I am not a C++ expert. >

在extern \一行之后,添加了一个预定义条件,然后继续直接make(刚刚修改的double-int.h没有恢复)。等了至少1个多小时之后,终于结束而且没有报错~-~,然后 make install

大约10分钟,结束,而且成功~-~

然后拷贝qt-everywhere-opensource-src-4.8.1.tar.gz到一个目录中,解压,进入,然后: ./configure 结果失败:

Basic XLib functionality test failed!

You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in

/home/ligo/qttools/qt/qt-everywhere-opensource-src-4.8.1/mkspecs/linux-g++.

其中/home/ligo/qttools/qt是我拷贝到的路径。进入linux-g++目录(没有这个文件,而只有这个目录)里面有2个文件:qmake.conf、qmake.conf.h。.h文件里似乎没啥修改的,conf文件里似乎指定的是一些路径,内容不多,其中有三行如下: include(../common/linux.conf)

include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf)

其它似乎都没有包含有路径信息,先不管它,还是上网上搜索吧,发现大量相同内容的网址,比如http://www.linuxso.com/linuxrumen/19162.html,就按照上面的方法,直接安装3个库: sudo apt-get install libX11-dev libXext-dev libXtst-dev

然后接受一些确认信息,大约十多分钟全部安装完毕。明天继续 5.09:

已经又周三了。上来不管三七21,直接进入目录,然后: ./configure

结果又出现了找不到crt1.o、crii.o文件的错误,看来LIBRARY_PATH在每次时候都需要

重新设置,不会在安装成功之后也需要这样搞吧?怕怕地 经过大约半小时,结束,最后的提示如下: Qt is now configured for building. Just run 'make'. Once everything is built, you must run 'make install'. Qt will be installed into /usr/local/Trolltech/Qt-4.8.1 To reconfigure, run 'make confclean' and 'configure'.

终于有希望了。然后make。大约40分钟之后,一大堆错误出来了:

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:62:65: 错误:expected class-name before ?{? token

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h: 在构造函数?QTJSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData(QTJSC::JSGlobalObject::JSGlobalObjectData::Destructor)?中:

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:71:19: 错误:类型?QTJSC::JSVariableObject::JSVariableObjectData?不是?QTJSC::JSGlobalObject::JSGlobalObjectData?的直接基类

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h: 在构造函数?QTJSC::JSGlobalObject::JSGlobalObject()?中:

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:166:124: 错误:对?QTJSC::JSVariableObject::JSVariableObject(QTWTF::PassRefPtr, QTJSC::JSGlobalObject::JSGlobalObjectData*)?的调用没有匹配的函数

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:166:124: 附注:备选是:

In file included

from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:27:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:86:9: 附注:QTJSC::JSVariableObject::JSVariableObject(QTWTF::NonNullPassRefPtr, QTJSC::JSVariableObject::JSVariableObjectData*)

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:86:9: 附注: no

known conversion for argument 2 from ?QTJSC::JSGlobalObject::JSGlobalObjectData*? to ?QTJSC::JSVariableObject::JSVariableObjectData*? In file included

from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:27:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:43:11: 附注:QTJSC::JSVariableObject::JSVariableObject(const QTJSC::JSVariableObject&) ../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::JSGlobalObject(QTWTF::NonNullPassRefPtr, QTJSC::JSGlobalObject::JSGlobalObjectData*, QTJSC::JSObject*)?中:

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:173:47: 错误:对?QTJSC::JSVariableObject::JSVariableObject(QTWTF::NonNullPassRefPtr&, QTJSC::JSGlobalObject::JSGlobalObjectData*&)?的调用没有匹配的函数

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:173:47: 附注:备选是: In file included

from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:27:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:86:9: 附注:QTJSC::JSVariableObject::JSVariableObject(QTWTF::NonNullPassRefPtr, QTJSC::JSVariableObject::JSVariableObjectData*)

../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:86:9: 附注: no known conversion for argument 2 from ?QTJSC::JSGlobalObject::JSGlobalObjectData*? to ?QTJSC::JSVariableObject::JSVariableObjectData*? In file included

from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h:27:0, from ../3rdparty/javascriptcore/JavaScriptCore/API/APICast.h:30, from ../3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp:30: ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h:43:11: 附注:QTJSC::JSVariableObject::JSVariableObject(const QTJSC::JSVariableObject&)