qt-everywhere-opensource-src-5.6.2 编译

1、http://download.qt.io/official_releases/qt/5.6/5.6.2/single/ 下载源码,解压。

2、QMAKESPEC 环境变量的设置,指定QT/qtbase/mkspecs下编译器描述文件夹的路径

3、mkspecs下创建自己服务器交叉编译器描述目录,我的目录为xilinx,所以为arm-xilinx。。。,直接复制linux-arm-gnueabi-g++/下的qmake.conf 和 qplatformdefs.h文件到自己目录下,修改路径下编译器名。

4、经测试,指定库可在1、在.configure -L path -I lib,指定外部库文件,没有生效,具体原因待查。指定路径方法2:在qmake.conf通过Qmake_incdir和qmake_libdirl来指定。3 通过pkg-config 来配置路径:export PKG_CONFIG_LIBDIR=${DFB_DIR}/lib:$PKG_CONFIG_LIBDIR
export PKG_CONFIG_PATH=${DFB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=${DFB_DIR}/lib:$LD_LIBRARY_PATH


error:

错误:1、Relocations in generic ELF (EM: 40):

重新解压 || make distclean || make clean.

2、 tslib安装失败:

qmake.conf交叉编译路径指定问题 || tslib库路径指定不对。

3、make install出错:极有可能是build.sh中没有指定不编译没有源码的库(自己需要去网站下载对应的源码,编译成.so,并指定路径。比如,freetype等,库路径指定方法如上4)。

4、在寻找库的时候跳过(/usr/bin/ld: skipping incompatible),我遇到的问题是,在qmake.conf中指定的编译链有问题。


注意:    在qmake.conf通过CROSS_CMPILE指定交叉编译链注意路径,不行则直接写绝对路径(交叉编译链的名字)。如果环境变量有问题,直接用环境变量指定交叉编译链会出问题。


步骤1、

建立.build.sh脚本在源码路径下,并执行。

build.sh脚本内容。其中tslib freetype需要添加外部库。

export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig
DFB_DIR=..QT5/lib
./configure \
-prefix ../qt_arm \
-confirm-license \
-opensource \
-release \
-static \
-make libs \
-gui \
-widgets \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-no-sql-sqlite \
-system-libpng \
-system-freetype \
-system-libjpeg \
-no-zlib \
-no-gif \
-no-libjpeg \
-no-libpng \
-qt-freetype \
-no-xinput2 \
-no-pulseaudio \
-no-gtkstyle \
-no-alsa \
-no-icu \
-tslib \
-linuxfb\
-no-egl -no-eglfs -no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-alsa \
-no-glib \
-no-dbus \
-no-xcb \
-no-qml-debug \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake tests -no-iconv \
-I/${DFB_DIR}/include \
-L/${DFB_DIR}/lib -lts

2、make

3、make install

你可能感兴趣的:(linux,c++)