一、编译Qt5.4 forIFC6410
环境变量
exportQT_SYSROOT=/home/gang/IFC6410/qt-5.4-sysroot
exportMONTFOLDER=/home/gang/IFC6410/ImgMountFolder
exportQT_INSTALL_DIR=/home/gang/IFC6410/qt-5.4-for-ifc6410-installed
exportARCH=arm
exportCROSS_COMPILE=/home/gang/IFC6410/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-
1.解压img
sudo apt-get installandroid-tools-fsutils
simg2imglinaro-trusty-gnome-ifc6410-20141024-37.imglinaro-trusty-gnome-ifc6410-20141024-37.img.raw
2.挂在至目录
mount -oloop/home/gaea/IFC6410/ifc-pre-images/IFC6410_Ubuntu_Linux_BSP_880310_V1.3/IFC6410_Ubuntu_Linux_BSP_880310_V1.3/binaries/linaro-trusty-gnome-ifc6410-20141024-37.img.raw/home/gaea/IFC6410/qt5.4-for-ifc6410/ImgMountFolder
3.配置qt源码配置文件
qtbase->mkspec->device->ifc-linux->qmake.conf
#
# qmakeconfiguration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR
CONFIG
QMAKE_INCREMENTAL_STYLE = sublib
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
#CROSS_COMPILE=/home/gaea/IFC6410/qt5.4-for-ifc6410/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-
CROSS_COMPILE=/home/gaea/IFC6410/qt5.4-for-ifc6410/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-
QTSYSROOT=/home/gaea/IFC6410/qt5.4-for-ifc6410/qt5.4-sysroot
MONTFOLDER=/home/gaea/IFC6410/qt5.4-for-ifc6410/ImgMountFolder
QMAKE_INCDIR
QMAKE_LIBDIR
#QMAKE_LIBS= -lcap -lcidn -lcom_err -lc_nonshared -lm -lc -ldl -lpthread-lld-linux -lld-linux-armhf -lffi -lwayland-egl -lwayland-client-lwayland-server -ldrm -ldrm_nouveau -ldrm_freedreno -lxcb-xfixes-lxcb-dri2 -lxcb-dri3 -lXau -lX11-xcb -lXdmcp -lxcb -lX11 -lxcb-shm-lXrender -lxcb-render-util -lxcb-render -lxcb-icccm -lxcb-util-lXi -lXext -lxcb-icccm -lgbm
#QMAKE_LIBS+=-Wl,-rpath-link=$${MONTFOLDER}/lib/arm-linux-gnueabihf -lpng12-lharfbuzz -lz -lstdc++ -lm -lgcc_s -lld-linux-armhf -lpthread-licui18n -licuuc -ldl -lglib-2.0 -lrt -lfreetype -lgraphite2-licudata -lpcre -lffi -ldrm -ldrm_nouveau -ldrm_freedreno-lxcb-xfixes -lxcb-dri2 -lxcb-dri3 -lXau -lX11-xcb -lXdmcp -lxcb-lX11 -lxcb-shm -lXrender -lxcb-render-util -lxcb-render-lxcb-icccm -lxcb-util -lXi -lXext -lxcb-icccm -lwayland-egl-lwayland-client -lwayland-server -lgbm
QMAKE_LIBS+=-L$${MONTFOLDER}/usr/lib/arm-linux-gnueabihf-L$${MONTFOLDER}/lib/arm-linux-gnueabihf -dynamic-linker -lc-2.19-lXau -lXdmcp -lpthread -lxcb-dri2 \
QMAKE_INCDIR_OPENGL_ES2 =/home/gaea/IFC6410/qt5.4-for-ifc6410/profiles/include
QMAKE_LIBDIR_OPENGL_ES2 =$${MONTFOLDER}/lib/arm-linux-gnueabihf \
QMAKE_LIBS_OPENGL_ES2= -lglapi -lGLESv1_CM-lGLESv2
#modifications to g++.conf
QMAKE_CC
QMAKE_CXX
QMAKE_LINK
QMAKE_LINK_SHLIB
QMAKE_CFLAGS
QMAKE_CXXFLAGS
#modifications to linux.conf
QMAKE_AR
QMAKE_OBJCOPY
QMAKE_NM
QMAKE_STRIP
load(qt_config)
#include"../../linux-g++/qplatformdefs.h"
4.检查环境变量
echo
echo$CROSS_COMPILE
echo$ARCH
echo$QT_SYSROOT
5.配置Qt源码
./configure-v --prefix=/qt5.4-for-ifc6410-installed
6.提示找不到库,在${MONTFOLDER}/usr/lib/arm-linux-gnueabihf目录下创建软链接(去除版本号版本)
ls*X11
ln -sAAA.so.1.1 AAA.so
解决所有找不到库文件
找不到-lxcb-aux
最终添加
QMAKE_LIBS= -lcap -lcidn -lcom_err -lc_nonshared -lm -lc -ldl -lpthread-lld-linux -lld-linux-armhf -lffi -lwayland-egl -lwayland-client-lwayland-server -ldrm -ldrm_nouveau -ldrm_freedreno -lxcb-xfixes-lxcb-dri2 -lxcb-dri3 -lgbm -lXau -lX11-xcb -lXdmcp -lxcb -lX11-lxcb-shm -lXrender -lxcb-render-util -lxcb-render -lxcb-icccm-lxcb-util -lXi -lXext -lxcb-icccm
7.检查configure配置结果
make-j4
makeinstall
问题一:
-qt-xcb
问题二:解决方法是修改libc的依赖库,我先删除了目录下的libc文件,然后创建了toolchain中的依赖库,然后再删除toolchain中的libc.so,再添加rootfs中的libc-2.19,再修改编译参数为:
QMAKE_LIBS +=-L$${MONTFOLDER}/usr/lib/arm-linux-gnueabihf-L$${MONTFOLDER}/lib/arm-linux-gnueabihf -dynamic-linker -lc-2.19-lXau -lXdmcp -lpthread -lxcb-dri2 \
/home/gaea/IFC6410/qt5.4-for-ifc6410/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/../arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/crt1.o:In function `_start':
:(.text+0x24): undefined reference to`__libc_csu_fini'
:(.text+0x2c): undefined reference to`__libc_csu_init'
collect2:error: ld returned 1 exit status
make: ***[opengles2] Error 1
OpenGL ES2.0 disabled.
编译概览
Buildoptions:
Qt modulesand options:
Supportenabled for:
二、IFC6410开发板环境配置
1.配置lib加载路径
sudo vi /etc/ld.so.conf
添加qt5.4 的lib文件夹
sudo ldconfig生效
2.拷贝plugin/platforms路径到执行路径下(或者添加环境变量)
3.设置环境变量
export QTDIR=
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib
exportQWS_DISPLAY="LinuxFB:mmWidth200:0"
3.1.qt的触摸屏和指针环境变量bash文件
#!/bin/sh
if [ -c /dev/input/event0 ]; then
else
fi
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
exportQTDIR=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib
exportQWS_MOUSE_PROTO="Tslib:$INPUT_PATH/event1"
#export QWS_MOUSE_PROTO="Tslib:$INPUT_PATH/event1MouseMan:$INPUT_PATH/mouse1"
export QWS_KEYBOARD=TTY:/dev/tty1
#sync font size with QtDesigner
exportQWS_DISPLAY="LinuxFB:mmWidth200:0"
#export QWS_SIZE="480x272"
export KDEDIR=/opt/kde
export HOME=/root
GDB
5.1. wget http://ftp.gnu.org/gnu/gdb/gdb-7.8.2.tar.gz
5.2. ./configure --target=arm-linux-gnueabihf--with-python
make
sudo make installed
安装到默认位置,否则有可能找不到python
默认位置在/usr/local/bin/arm-linux-gdb
GDBSERVER
sudo apt-get install gdbserver
三、编写Qt程序配置
1.在pro文件中添加
target.path =/home/linaro
INSTALLS +=target
2.解决中文字体乱码
拷贝一个ttf文件到qt安装目录下/lib/lonts下,并将原目录下的所有字体备份删除(保证此目录只有一个字体,否则需要程序指定使用哪一个字体)
QGuiApplicationapp(argc, argv);
QQuickViewview;
// Load theembedded font.
QString fontPath= ":/fonts/MyFont.ttf";
int fontId =QFontDatabase::addApplicationFont(fontPath);
if (fontId !=-1)
{
}
联系客服