Linux系统下Qt4.8.2环境搭建

Linux系统下Qt4.8.2环境搭建

参考文章:https://www.linuxidc.com/Linux/2013-07/87576.htm

参考博客:https://blog.csdn.net/qq_22716879/article/details/51819184

一.安装G++环境
 sudo apt-get install build-essential 
另外的一些相关环境。如果不安装,一些qt的组件是无法正常编译的,例如openGL
 sudo apt-get install libx11-devlibxau-dev libxaw7-dev libxcb1-dev libxcomposite-dev libxcursor-devlibxdamage-dev libxdmcp-dev
sudo apt-get install libxext-dev libxfixes-devlibxfont-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-devlibxmuu-dev
sudo apt-get install libxpm-dev libxrandr-devlibxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libssl-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libcups2-dev
sudo apt-get install libgl1-mesa-devlibglu1-mesa-dev

sudo apt-get install libgstreamer0.10-dev 


二.解压代码
tar zxvf qt-everywhere-opensource-src-4.8.2.tar.gz
解压完进入解压后的源代码文件夹

 

三.执行./configure生成makefile
./configure -prefix /usr/local/Qt-4.8.2
(
上面指定的这个目录/usr/local/Qt-4.8.2 ,就是make install 后的安装目录)
下面出现对话框选择open source edition.这是自由版。输入yes接受协议。
(1)
如果你的机器各种库文件完整,经过一小会,配置完成,会出现以下信息
              Qt  is now configured forbuilding ,just run 'make'
              Once everything is built , youmust run 'make  install'
              Qt will be installed into/usr/local/Qt-4.8.2
              To  reconfigure ,run'make confclean' and 'configure'
说明Makefile文件生成成功
(2)
如果出现以下信息
        Basic XLib functionality test failed!
        You might need to modify the include and librarysearch paths by editing
        QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in/home/gcgily/qt-everywhere-opensource-src-4.8.4/mkspecs/linux-g++
       
还是老办法,以不变应万变。进config.test/x11/xlib执行make命令,看出错信息
        g++ -Wl,-O1 -o xlib xlib.o   -L/usr/X11R6/lib -lXext -lX11 -lm
        /usr/bin/ld: cannot find -lXext
       
看到了吧,g++/usr/X11R6/lib下,找不到libXext.so呢。
       
其原因就在于需要安装libX11的开发包,在Ubuntu/debian里包名都是libX11-dev
       
根据以往的经验,在./configure前主动装好下面3个包,基本上就万事大吉了
        sudo apt-get install libX11-dev libXext-devlibXtst-dev
安装所需到包后再重新./configure即可生成Makefile文件

如果出现:ProjectERROR: Package gstreamer-app-0.10 not found,则执行以下命令
apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
如果出现 g++: error: unrecognizedcommand line option ‘-fuse-ld=gold’

这是Qt的一个bughttps://bugs.webkit.org/show_bug.cgi?id=89312

在装有gold linker的系统里,编译脚本会加入-fuse-ld=gold选项,但这个选项gcc是不支持的。解决办法是移除该选项,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold

#  
     QMAKE_LFLAGS+=-fuse-ld=gold

 

四、编译QT
执行make命令,需要2个小时。

 

五、安装QT
运行sudo make install命令。需要几分钟时间,默认安装到/usr/local/Qt-4.8.2. 运行/usr/local/Qt-4.5.3/bin/designer ,若能启动QT,说明QT已经安装好了。

 

六、设置环境变量
更改用户环境变量

注:

1.username为个人虚拟机用户名

2.我的Qt实际安装目录为/home/share/hitarget/qt-everywhere-opensource-src-4.8.2/bin, 没有安装到预期的/usr/local/Qt-4.8.2

3.下面按照我的实际安装目录情况进行设置

 

gedit  /home/username/.bashrc
添加:
export QTDIR=
/home/share/hitarget/qt-everywhere-opensource-src-4.8.2
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 

注:不必要更改root环境变量,可能导致虚拟机崩溃
更改包括root用户的环境变量
sudo gedit /etc/profile  (
此处profile文件要更改一下权限才能写入)
添加:
export QTDIR=
/home/share/hitarget/qt-everywhere-opensource-src-4.8.2
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 

七、测试环境变量
重启测试环境变量:
qmake -v
显示版本信息:
QMake version 2.01a
Using Qt version 4.8.2 in /usr/local/Qt-4.8.2/lib
which qmake
显示安装位置信息:
/usr/local/Trolltech/Qt-4.8.2/bin/qmake
环境变量设置成功。

 

注:qmake -v的时候出现以下错误

qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’:No such file or directory

原因:qtchooser默认选择路径中没有指向qmake路径

解决:

cd/usr/lib/x86_64-linux-gnu/qt-default/qtchooser

vim default.conf

将第一行中的/usr/lib/x86_64-linux-gnu/qt4/bin删除(我仅注释掉不行)
替代为/home/share/hitarget/qt-everywhere-opensource-src-4.8.2/bin(我的qmake安装路径)


代码:
如果需要在Qt中引用其他的包以及库文件,则使用:
INCLUDEPATH += /usr/local/include/
INCLUDEPATH += /usr/local/include/Eigen
INCLUDEPATH += /usr/local/include/boost
INCLUDEPATH += /usr/local/include/CGAL


LIBS += -L/usr/local/lib/ -lgmp
LIBS += -L/usr/local/lib/ -lmpfr
其中LIBS参数中 -l后只能接特定某一个库文件,且如果该文件为 “libxxx.so“,则-l后只接"xxx"


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章