本文主参考:http://zero.lichee.pro/%E5%BA%94%E7%94%A8/QT_index.html

环境 Ubuntu16 64位

arm-linux-gnueabihf version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)

(根据参考链接编译嵌入式版本Qt4.8.7时遇到诸多问题,特此记录)

1.交叉编译并安装

sudo apt-get install libtool automake autogen autoconf libsysfs-dev
git clone https://github.com/kergoth/tslib.git
cd tslib
echo "ac_cv_func_malloc_0_nonnull=yes" > tmp.cache
./autogen.sh
./configure --host=arm-linux-gnueabihf --cache-file=tmp.cache --prefix=/opt/tslib CC=arm-linux-gnueabihf-gcc
make
sudo make install

完成后会在Ubuntu系统/opt目录下出现tslib文件夹,将此文件夹拷贝置嵌入式系统相同目录下,配置嵌入式系统环境变量 vi /etc/profile,根据自己系统添加如下内容:

#export TSLIB_ROOT=/opt/tslib
#export TSLIB_TSDEVICE=/dev/input/event1
#export TSLIB_CALIBFILE=/etc/pointercal
#export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
#export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
#export TSLIB_FBDEVICE=/dev/fb0
#export TSLIB_CONSOLEDEVICE=none
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib

/dev/fb0对应显示设备。添加保存后 source /etc/profile 使能环境变量,运行/opt/tslib/bin/ts_test 测试是否成功。/opt/tslib/bin/ts_calibrate为触摸校准程序。

2.交叉编译QT4.8.7

下载 qt-everywhere-opensource-src-4.8.7.tar.gz并解压,进入文件夹内修改文件 vim mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf,修改后内容如下:

#
# qmake configuration for building with arm-none-linux-gnueabi-g++
# include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf) # modifications to g++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts # modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_STRIP = arm-linux-gnueabihf-strip load(qt_config) QMAKE_INCDIR += /opt/tslib/include /opt/sqlite3/include
QMAKE_LIBDIR += /opt/tslib/lib /opt/sqlite3/lib
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++

修改完成后执行如下命令配置Qt编译环境:

./configure -verbose -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -depths ,,, -fast -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian  -host-little-endian -no-opengl -no-openssl -nomake examples -make docs -qt-mouse-tslib -I/opt/tslib/include -L/opt/tslib/lib -prefix /opt/qt-4.8.-arm

等待配置完成后,执行:

make -j8
make install

make和install都顺利的话会出现/opt/qt-4.8.7-arm。同样将其拷贝置嵌入式系统的相同目录下并配置环境变量vi /etc/profile,根据自己系统添加如下内容:

export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/opt/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/tslib/lib:/opt/qt-4.8.-arm/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/opt/tslib/bin
export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt-4.8.-arm/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/opt/qt-4.8.-arm/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
export QWS_MOUSE_PROTO=Tslib:/dev/input/event1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opti/tslib/lib:/opt/qt-4.8.-arm/lib:/usr/lib/arm-linux-gnueabihf/lib

(以上环境变量包含上文中已经配置过的tslib环境变量)

3.使用Qt Creator编译项目并在嵌入式设备中运行

自行安装Qt Creator,新建项目:

编译后将生成文件拷贝置嵌入式系统中, /root/qt_test -qws 运行(记住需要加 -qws)。

如果运行出错:

QLock::QLock: Cannot create semaphore /tmp/qtembedded-/QtEmbedded- 'd' (, Function not implemented)
Cannot get display lock

请重新编译内核,在配置中勾选General setup ---> System V IPC

然后运行即可。

嵌入式V3s交叉编译 tslib和QT4.8.7,并使用Qt Creator编译项目的更多相关文章

  1. linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本

    最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...

  2. linux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本 以及x64上编译qt

    最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用. 考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作. 本文参考: Qt移植到ARM Lin ...

  3. Qt Creator的安装与Qt交叉编译的配置

    Qt Creator 的安装 到Qt官网下载Qt Creator  https://www.qt.io/download-open-source/ 其它旧版本点击Achieve连接下载 或登录http ...

  4. Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)

    下面是vs2010导入别人文件时出现的问题的解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属 ...

  5. Ubuntu10.04下安装Qt4和创建第一个Qt程序

    1.首先安装Qt4并采用Qt Creator进行开发演示 (1)在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfi ...

  6. 为基于busybox根文件系统的ARM嵌入式Linux交叉编译dropbear使能SSH

    原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 最近使用busybox为基于ARM的板卡定制了一个极简单的根文件系统,由于busybox仅支持telnet ...

  7. 构建嵌入式Linux交叉编译工具链

    开源交叉编译工具链制作方法汇总: 1) 使用crosstool/crosstool-ng生成 2) 使用buildroot生成 ARM交叉编译工具链说明: 1) arm-linux-gcc是一个集合命 ...

  8. Linux嵌入式学习-交叉编译openssl

    利用arm-none-linux-gnueabi-gcc交叉编译openssl,生成静态库文件libcrypto.a ,libssl.a 1.从openssl官网下载openssl最新版本,我下载的是 ...

  9. Linux嵌入式学习-交叉编译mplayer

    http://bbs.gkong.com/archive.aspx?ID=286721

随机推荐

  1. matlab简介 基本操作

    1.快捷键: Tab.Ctrl+] :增加缩进 Ctrl+[ :减少缩进 Ctrl+I:自动缩进 Ctrl+R:增加注释 Ctrl+T:去掉注释 F12:设置或清除断点 F5:运行 2.特殊变量: i ...

  2. SmartBinding与kbmMW#1

    即将发布的kbmMW,实现了SmartBinding,SmartBinding的设计目标是: 必须易于使用 必须最小化或完全删除锅炉板代码.(你看到这里的趋势了吗?... kbmMW从那时开始就是为了 ...

  3. python3 opencv3 实现基本的人脸检测、识别功能

    一言不和,先上码子(纯新手,莫嘲笑) # encoding: utf-8 #老杨的猫,环境:PYCHARM,python3.6,opencv3 import cv2,os import cv2.fac ...

  4. dos4章

    批处理中的变量,我把他分为两类,分别为"系统变量"和"自定义变量" 我们现在来详解这两个变量! 一.系统变量 他们的值由系统将其根据事先定义的条件自动赋值,也就 ...

  5. 用python写一个名片管理系统

    info = [] #先定义一个空字典while True: #利用while循环 print(' 1.查看名片') #第一个选项 print(' 2.添加名片') #第二个选项 print(' 3. ...

  6. linux Posix线程同步(条件变量) 实例

    条件变量:与互斥量一起使用,暂时申请不到某资源时进入条件阻塞等待,当资源具备时线程恢复运行 应用场合:生产线程不断的生产资源,并通知产生资源的条件,消费线程在没有资源情况下进入条件等待,一直等到条件信 ...

  7. modelSIM仿真ROM核报错

    用Quartus Prime 15.1调用modelSIM进行RTL仿真,modelSIM的transcript框框总是有Failed to Open Readmem File提示. 错误原因:IP核 ...

  8. call,apply,bind 方法的学习

    这是三个常用的操作函数的方法,在js中函数就是一等公民,所以说掌握这三个方法还是有必要的 call 和 apply,都会绑定函数的上下文(context)并立即执行调用该方法函数,两者区别在于,接受的 ...

  9. app内嵌vue h5,安卓和ios拦截H5点击事件

    安卓和ios拦截h5点击事件,这个函数事件必须是暴漏在window下的 安卓和ios拦截普通h5函数: <div onclick = "show(),window.android.sh ...

  10. vue列表拖拽组件 vue-dragging

    安装 $ npm install awe-dnd --save 应用 在main.js中,通过Vue.use导入插件 import VueDND from 'awe-dnd' Vue.use(VueD ...