Linux下安装QT的剧痛经历.docx
《Linux下安装QT的剧痛经历.docx》由会员分享,可在线阅读,更多相关《Linux下安装QT的剧痛经历.docx(23页珍藏版)》请在冰豆网上搜索。
![Linux下安装QT的剧痛经历.docx](https://file1.bdocx.com/fileroot1/2023-5/22/9c05c95c-7c6b-4e41-8cd0-c94ef2e63fcc/9c05c95c-7c6b-4e41-8cd0-c94ef2e63fcc1.gif)
Linux下安装QT的剧痛经历
安装QT的惨痛经历
目标:
2012.4月下旬,计划开始在linux上安装QT和ffmpeg,准备摸索一下视频客户端的开发。
----------------------------------------------------以下是安装过程----------------------------------------------------
由于没有额外的电脑,所以使用了虚拟机安装。
电脑上刚好有fedora6版本的linux,于是安装。
在安装过程中选择了开发工具。
安装完成,从官网下载最新的qt4.8.0,拷贝到一个目录中然后解压。
进入目录后:
./configure,选择开源“o”,并接受协议“yes”,2小时后,提示失败。
找不到解决办法,后听说一般都用红帽企业版,后找来企业版5.5安装。
安装完成,然后把原始的qt卸载,计划安装新版本。
结果无法安装,痛苦。
由于原先的QT被卸载,所以又只好重装同一系统。
完成后不再卸载原始的qt,但是无qtcreator,随后在nokia官网下载qtcreator成功,然后安装成功。
但是无法启动,双击时无任何反应,汗。
安装qtsdk,先:
./configure,结果提示总线错误
安装ffmpeg,先:
./configure,结果提示总线错误
又上nokia官网下载qtlib,结果下载下来的是qt4.8.1(文件名QtSdk-offline-linux-x86-v1.2.1.run,为方便,后面以表示之),按照说明,先修改文件的执行模式:
chmodu+x,成功,然后安装:
./,仍然是错误:
/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run:
/usr/lib/libstdc++.so.6:
version`GLIBCXX_3.4.9'notfound(requiredby/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run)
/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run:
/usr/lib/libstdc++.so.6:
version`GLIBCXX_3.4.11'notfound(requiredby/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run)
/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run:
/lib/libc.so.6:
version`GLIBC_2.9'notfound(requiredby/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run)
/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run:
/lib/libc.so.6:
version`GLIBC_2.10'notfound(requiredby/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run)
/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run:
/lib/libc.so.6:
version`GLIBC_2.11'notfound(requiredby/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run)
/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run:
/lib/libc.so.6:
version`GLIBC_2.7'notfound(requiredby/root/Desktop/vmtool/QtSdk-offline-linux-x86-v1.2.1.run)
上网上搜索,说需要libstdc++.so.6.0.10,然后下载之,放入/usr/lib/中,并修改libstdc++.so.6的链接为此文件,然后继续安装,此报另外的错误(内容没有记下来),此时原来的文本文件编辑器gedit无法启动,直接崩溃。
然后换回libstdc++.so.6的链接文件为原来的libstdc++.so.6.0.8,无解。
再仔细看nokia网站说明,似乎没有说支持企业版linux,而是支持ubuntu。
然后下载ubuntu11.10的桌面版(基本上是最新的了),32位的。
安装,过程中不能选择开发工具,但是等了好久,终于安装完成。
查看,结果无qt,只好重新安装。
这次直接安装qt4.8.1(qt-everywhere-opensource-src-4.8.1),解压,进入目录:
./configure
结果提示无g++,晕,明显是安装了gcc,竟然没有g++!
后上网搜索g++,但似乎是集成在gcc里的,所以到官网http:
//gcc.gnu.org/下载gcc最新版本4.7.0,这里有很多镜像站点,我从加拿大的一个站点上下载,速度相当快,总大小有101MB。
下载完成,放进虚拟机,拷贝到一个目录中,然后解压,进入目录,运行如下命令(只有2个目录3个文件):
./install-sh
结果提示错误,我晕啊。
查看拷贝进来的压缩文件,只有183KB,而原始的是101MB,后重新拷贝,原来是上次没有拷贝完,但不知原因。
解压后,目录里有很多文件夹和文件,这次正常了,再次进入,运行命令:
./configure
数分钟后,提示:
checkingforobjdir....libs
checkingforthecorrectversionofgmp.h...no
configure:
error:
BuildingGCCrequiresGMP4.2+,MPFR2.3.1+andMPC0.8.0+.
Trythe--with-gmp,--with-mpfrand/or--with-mpcoptionstospecify
theirlocations. Sourcecodefortheselibrariescanbefoundat
theirrespectivehostingsitesaswellasat
ftp:
//gcc.gnu.org/pub/gcc/infrastructure/. Seealso
http:
//gcc.gnu.org/install/prerequisites.html foradditionalinfo. If
youobtainedGMP,MPFRand/orMPCfromavendordistributionpackage,
makesurethatyouhaveinstalledboththelibrariesandtheheader
files. Theymaybelocatedinseparatepackages.
汗,还需要另外的三个库!
上网搜索,结果在gcc官网的fpt站点上发现了它们,下载之,然后放入虚拟机中,拷贝到独立目录中,直接解压,然后进入gmp目录:
./configure
结果提示如下:
checkingwhethervsnprintfworks...yes
checkingwhethersscanfneedswritableinput...no
checkingforstructpst_processor.psp_iticksperclktick...no
checkingforsuitablem4...configure:
error:
Nousablem4in$PATHor/usr/5bin(seeconfig.logforreasons).
没有m4(m4是什么东东?
一头雾水),不管,进入mpc:
./configure
结果提示另外一个错误(没有记录下来),mygod,要死人了,也不管,进入mpfr目录,然后:
./configure
结果提示内容和gmp一样,放我一条生路吧$#@@!
!
继续上网搜索m4,发现这是一个库,下载最新版本,然后解压再安装:
./configure
make
makeinstall
非常顺利,成功!
除了qtctreator一次性成功之外,这个是第二次了,爽。
回过头安装gmp:
./configure
成功,再
make
也成功,继续
makeinstall
又成功了,顺利啊,再安装mpc:
./confgiure
结果提示和上次一样,是有mpfr有关的,所以就先安装mpfr,成功,再安装mpc,也成功。
松了口气。
安装gcc4.7.0:
./configure
结果错误还是一样,需要那3个库。
晕,版本不对也不行啊,关键是有的库不好找,本来不想找,但现在看来不找还是不行,找就找了,终于找到了,下载地址:
mpfr,mpc:
http:
//www.multiprecision.org/
mpfr:
http:
//mpfr.loria.fr/mpfr-2.3.1/
gmp:
http:
//gmplib.org/
这次一定要下载对应的版本了,下载结束再安装(无需再安装m4了,之前安装好的),仍然按照正确的顺序:
先gmp,再mpfr,最后mpc,顺利,又成功了。
再安装gcc4.7.0:
./configure
几秒钟后结束,没有报错,心有喜。
继续:
make
满屏飞滚字母,这下有好戏看了,一边写这个文章,一边让它在那里滚吧。
几十分钟过去了,它停住了!
提示如下:
checkingfori686-pc-linux-gnu-gcc.../home/ligo/qttools/gcc-4.7.0/host-i686-pc-linux-gnu/gcc/xgcc-B/home/ligo/qttools/gcc-4.7.0/host-i686-pc-linux-gnu/gcc/-B/usr/local/i686-pc-linux-gnu/bin/-B/usr/local/i686-pc-linux-gnu/lib/-isystem/usr/local/i686-pc-linux-gnu/include-isystem/usr/local/i686-pc-linux-gnu/sys-include
checkingforsuffixofobjectfiles...configure:
error:
in`/home/ligo/qttools/gcc-4.7.0/i686-pc-linux-gnu/libgcc':
configure:
error:
cannotcomputesuffixofobjectfiles:
cannotcompile
See`config.log'formoredetails.
make[2]:
***[configure-stage1-target-libgcc]错误1
make[2]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0'
make[1]:
***[stage1-bubble]错误2
make[1]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0'
make:
***[all]错误2
上网上搜索到几个网址:
http:
//gcc.gnu.org/bugzilla/show_bug.cgi?
id=40360
http:
//gcc.gnu.org/bugzilla/show_bug.cgi?
id=35693
http:
//gcc.gnu.org/bugzilla/show_bug.cgi?
id=35577
http:
//gcc.gnu.org/bugzilla/show_bug.cgi?
id=36248
说的问题都很相似,但可能不是同一个版本。
大致看了一下,有可能是mpfr库的路径造成的问题,于是想按照示例指定mpfr的路径,在终端上的查看mpfr的路径:
whereismpfr
结果显示为空!
竟然没有安装成功?
但是安装的过程中没有看到有错误产生。
为了再看一遍是否成功,对mpfr重新安装了一遍,在makeinstall结束后,离打印结束的位置很近的地方有如下提示:
----------------------------------------------------------------------
Librarieshavebeeninstalledin:
/usr/local/lib
Ifyoueverhappentowanttolinkagainstinstalledlibraries
inagivendirectory,LIBDIR,youmusteitheruselibtool,and
specifythefullpathnameofthelibrary,orusethe`-LLIBDIR'
flagduringlinkinganddoatleastoneofthefollowing:
-addLIBDIRtothe`LD_LIBRARY_PATH'environmentvariable
duringexecution
-addLIBDIRtothe`LD_RUN_PATH'environmentvariable
duringlinking
-usethe`-Wl,--rpath-Wl,LIBDIR'linkerflag
-haveyoursystemadministratoraddLIBDIRto`/etc/ld.so.conf'
Seeanyoperatingsystemdocumentationaboutsharedlibrariesfor
moreinformation,suchastheld
(1)andld.so(8)manualpages.
----------------------------------------------------------------------
先不管,再:
whereismpfr
结果还是显示为空,直接打开/usr/local/lib,还是可以看见有mpfr库的:
libmpfr.a、libmpfr.la、libmpfr.so.1.1.1、libmpfr.so.1.2.2,还有两个链接文件:
libmpfr.so、libmpfr.so.1。
指定路径的例子如下:
../gcc-4.3.0/configure--with-gmp=/apps/gmp/4.2.2
--with-mpfr=/apps/mpfr/2.3.0--prefix=/apps/gcc/4.2.2
--enable-languages=c,c++,fortran,java,objc,obj-c++,treelang
重新进入gcc4.7.0目录:
./configure--with-mpfr=/usr/local/lib
几秒钟就结束了,没有发现错误。
继续:
make
结果错误依旧。
继续上网搜索,请参考网址:
需要安装gmp与mpfr
并且需要在.bash_profile(一般在/root目录下)配置LD_LIBRARY_PATH,把GMP与MPFR对应的lib配置上
如:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/usr/local/mpfr/2.4.0/lib:
/usr/local/gmp/4.2.2/libexportLD_LIBRARY_PATH
一定要重启生效或者使用source/root/.bash_profile
但我不是root用户,无法进入这个目录,晕,root用户还没有开启,还得找方法。
哎,惨痛啊,今天都5.4号了,1周多了,这环境还没有搞定,看来搞linux有饭吃,服务就能赚钱了。
由于无法直接修改.bash_profile文件,所以就直接在命令行下胡乱试一下:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/usr/local/lib
然后再make,结果错误一样。
继续搜索,找到了
configure:
error:
cannotcomputesuffixofobjectfiles:
cannotcompilegcc
Configurefilecan'tfindmpfrlibs
exportLD_LIBRARY_PATH=/usr/local/lib(ifyourmpfrisintalledinit)
按照它,我输入:
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/usr/local/lib
然后再make,结果又错了,但信息不一样:
Infileincludedfrom/usr/include/stdio.h:
28:
0,
from../.././libgcc/../gcc/tsystem.h:
88,
from../.././libgcc/libgcc2.c:
29:
/usr/include/features.h:
323:
26:
fatalerror:
bits/predefs.h:
没有那个文件或目录
compilationterminated.
make[3]:
***[_muldi3.o]错误1
make[3]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0/i686-pc-linux-gnu/libgcc'
make[2]:
***[all-stage1-target-libgcc]错误2
make[2]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0'
make[1]:
***[stage1-bubble]错误2
make[1]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0'
make:
***[all]错误2
网上也找不到什么解决方法,我以为是自己可能把LD_LIBRARY_PATH变量给改坏了,用set看了一下,其值为:
/usr/local/lib,usr/local/lib
两个重复的没有啥特殊用途,于是重启虚拟机系统,再进入目录:
./configure
提示无权限,接着用
su
输入密码。
这个用来提升权限,再
./configure
很快就成功,然后继续
make
结果又出错了:
/home/ligo/qttools/gcc-4.7.0/host-i686-pc-linux-gnu/gcc/cc1:
errorwhileloadingsharedlibraries:
libmpfr.so.1:
cannotopensharedobjectfile:
Nosuchfileordirectory
make[3]:
***[_muldi3.o]错误1
make[3]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0/i686-pc-linux-gnu/libgcc'
make[2]:
***[all-stage1-target-libgcc]错误2
make[2]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0'
make[1]:
***[stage1-bubble]错误2
make[1]:
正在离开目录`/home/ligo/qttools/gcc-4.7.0'
make:
***[all]错误2
和之前不一样。
似乎又是mpfr的问题,但是进入/usr/local/lib查看,libmpfr.so.1还是在的,而且其链接的那个文件也同样存在,怎么可能打不开呢?
5.07:
今天启动虚拟机,然后直接输入set查看LD_LIBRARY_PATH的值,结果不存在这个坏境变量,于是设置它:
exportLD_LIBRARY_PATH=/usr/local/lib
然后再进入gcc-4.7.0目录:
./configure
成功,再
make
结果还是失败:
/usr/include/features.h:
323:
26:
fatalerror:
bits/predefs.h:
没有那个文件或目录
看来一定要查看这个文件是什么了,网上搜索到
解决方法:
确定你的系统是x86_64GNU/Linux
root@mm-desktop:
/home/mm/android#uname-a
Linuxmm-desktop2.6.27-9-generic#1SMPThuNov2022:
15:
32UTC2008x86_64GNU/Linux
安装libc6-dev-i386
sudoapt-getinstalllibc6-dev-i386
不管了,直接输入命令看能否解决:
sudoapt-getinstalllibc6-dev-i386
结果显示:
末发现软件包libc6-dev-i386,没有办法,上网上又搜索到
编译过程中出错,报错是fatalerror:
bits/predefs.h:
没有那个文件或目录compilationterminated.,需要安装包
multilib, 命令为$sudoapt-getinstallgcc-multilib
我在命令行中输入:
sudoapt-getinstallgcc-multilib
结果提示:
现在没有可用的软件包gcc-multilib,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其