这里安装的是“qt-everywhere-opensource-src-5.6.0”,是源码,因为我图形界面安装整合版Qt时,项目想调用qt总是找不到qt,这样手动安装我也知道安装位置,可以直接添加到cmake文件里去。
1、执行配置文件:
进入目录,配置文件
./configure -prefix $PWD/qtbase -opensource -nomake tests
需要输入o 使用open source版本
yes 确认用户协议
2、安装依赖项:
在“/qt-everywhere-opensource-src-5.6.0/qtbase/src/plugins/platforms/xcb”下面有个readme文件列出了需要的库
有些比较老没有了,Ubuntu16.04请按照我下面列出来的安装,都是可以安装成功的
apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1
apt-get install libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0
apt-get install libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync-dev
apt-get install libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev
apt-get install libxcb-render-util0 libxcb-render-util0-dev libxcb-glx0-dev libxcb-xinerama0-dev
3、接下来make
非常久,记得多线程
make all -j $(($(nproc) + 1))
等吧,2个小时算快的
但是可能由于多线程有的线程过快,导致顺序错乱....这时候还得改成make all 单线程的
make install
完毕!
4、关于qt库的链接
这仅仅是安装,一般是follow的项目需要安装qt库,这时候需要让项目找到qt在哪里,怎么办呢?
如果项目有cmake文件的话,一般会通过find_package自动找到,
如果找不到,可以手动设置
set(CMAKE_PREFIX_PATH "/home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase")
这里填写qtbase的路径
如果项目在执行时找不到qt,报错说libQt5Widgets.so.5 之类的找不到,可以创建一个链接到系统目录,程序就可以看到了
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/libQt5Widgets.so.5 /usr/lib
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/libQt5Gui.so.5 /usr/lib
ln -s /home/Face_Swap_Pro/qt-everywhere-opensource-src-5.6.0/qtbase/lib/libQt5Core.so.5 /usr/lib
在这之前,先删除原来的没用的qt的.so文件
rm /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
rm /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
rm /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
Good luck!
5、各种bug
1、/usr/bind.gold: error: cannot find -lboost_regex
找不到lboost_regex,先看下
echo $LD_LIBRARY_PATH
如果没有的话,在 ~/.bashrc 里加入
export LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH"
还不行的话,手动生成软链接
sudo ln -s /usr/local/lib/libboost_regex.so.1.64.0 /usr/lib/x86_64-linux-gnu/libboost_regex.so
sudo ln -s /usr/local/lib/libboost_regex.so.1.64.0 /usr/lib/libboost_regex.so
2、Unknown module(s) in QT: quick
在configure时取消这个模块(不推荐!我这样通过了,后来调用时又出错了,还是需要这个模块的)
/configure -prefix $PWD/qtbase -opensource -nomake tests -skip qtdeclarative
3、undefined reference to `png_set_longjmp_fn'
libpng太老了,可能默认是12的,装一个15的,然后换掉默认的链接。
下载地址:http://download.chinaunix.net/download/0006000/5976.shtml
ln -s /usr/local/lib/libpng15.so /usr/lib/x86_64-linux-gnu/libpng15.so -f
ln -s /usr/local/lib/libpng15.so /usr/lib/x86_64-linux-gnu/libpng.so -f
4、Qt编译错误“GL/gl.h:No such file or directory”的解决方法
apt-get install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev