ubuntu14.04安装arm版QT4.8.6(QtEmbedded-4.8.6-arm)并移植到开发板

本人在编译QT库时遇到了很多问题,偶然发现遇到的问题在此博客中都有提及。

参考博客:https://blog.csdn.net/hhhhh89/article/details/53888523

准备:下载qt-everywhere-opensource-src-4.8.6.tar.gz并复制到ubuntu目录中

1、进入存放qt源码的目录解压源码包

tar xzvf qt-everywhere-opensource-src-4.8.6.tar.gz

2、进入解压的源码目录

修改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                = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX               = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK              = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-g++ -lts

# modifications to linux.conf
QMAKE_AR                = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP             = /opt/toolschain/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-strip

load(qt_config)
//wlj
./configure -prefix /usr/local/qte-arm/ -force-pkg-config -opensource -confirm-license -release -shared -embedded arm -xplatform /qws/linux-arm-gnueabi-g++ -depths 16,18,24 -fast -optimized-qmake -pch  -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit  -no-qvfb -I/usr/temp-wlj/tmp/include -L/usr/temp-wlj/tmp/lib

//网上
./configure -v -prefix /usr/local/Trolltech/QtEmbedded-4.8.6-arm -opensource -confirm-license -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -make examples -make demos -make translations -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/opt/tslib-1.4/include -L/opt/tslib-1.4/lib

运行./configure会出现下列错误(本人也遇到该问题,并用该方法解决)

instruction: `swpb %al,%bpl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %cl,%dl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %cl,%dl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %al,%bpl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %cl,%dl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %cl,%dl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %al,%bpl,[%edi]'
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:131: Error: no such instruction: `swpb %sil,%cl,[%edi]'
make[1]: *** [.obj/release-shared-emb-arm/qabstractanimation.o] Error 1
make[1]: Leaving directory `/home/li/QT-ARM/qt-everywhere-opensource-src-4.8.6/src/corelib'
make: *** [sub-corelib-make_default-ordered] Error 2
li@ubuntu:~/QT-ARM/qt-everywhere-opensource-src-4.8.6$ make

可能是arm 交叉环境有问题,如果配置好了一般reconfigure下就ok.如果总是有问题,可以修改qatomic_armv5.h,将汇编用c code写可以避过这个错误。改inline char q_atomic_swp为以下内容
sudo gedit ​/home/li/QT-ARM/qt-everywhere-opensource-src-4.8.6/src/corelib/arch/qatomic_armv5.h​

inline char q_atomic_swp(volatile char *ptr, char newval)
 
{
 
register char ret;
 
/*asm volatile("swpb %0,%2,[%3]"
: "=&r"(ret), "=m" (*ptr)
: "r"(newval), "r"(ptr)
: "cc", "memory");*/
 
ret=*ptr;
 
*ptr=newval;
 
return ret;
 
} 

3、编译源码

make

出现下列错误

../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:145:1: error: stray ‘\200’ in program
../../include/QtCore/../../src/corelib/arch/qatomic_armv5.h:145:1: error: stray ‘\213’ in program
make[1]: *** [.pch/release-shared-emb-arm/QtCore.gch/c++] Error 1
make[1]: Leaving directory `/home/li/QT-ARM/qt-everywhere-opensource-src-4.8.6/src/corelib'
make: *** [sub-corelib-make_default-ordered] Error 2

原因就是在第2步修改qatomic_armv5.h​时,是直接从网页上复制的代码,某些英文的符号变成中文的格式而自己却不知道。这里找到定位的代码行把符号删掉重新输入英文的符号在重新make

修改完成重新make又出现下面错误

skipping incompatible /opt/tslib-1.4/lib/libts.so when searching for -lts

/opt/../ld:cannot find -lts出现以上问题的原因很明显,你的libts.so与./configure里指定的平台不兼容。即tslib库文件生成的不对,你的交叉编译环境有问题。参考安装tslib1.4。回到tslib重新安装,使用一下命令配置tslib:

./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ -host=arm-none-linux-gnueabi -prefix=/opt/tslib-1.4 ac_cv_func_malloc_0_nonnull=yes

然后同时指定交叉编译器
打开qt源码解压目录下的mkspecs/qws/linux-arm-g++/qmake.conf:

sudo gedit mkspecs/qws/linux-arm-g++/qmake.conf

用gedit打开qmake.conf 后,加上-lts,然后保存退出,更改后如下:

# modifications to g++.conf
QMAKE_CC = arm-linux-gcc -lts
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts
# modifications to linux.conf
QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_STRIP = arm-linux-strip

再次重新make出现下面错误

>::deref()]+0x30): undefined reference to `__sync_sub_and_fetch_4'
collect2: ld returned 1 exit status
make[1]: *** [../../lib/libQtScript.so.4.8.6] Error 1
make[1]: Leaving directory `/home/li/qt-everywhere-opensource-src-4.8.6/src/script'
make: *** [sub-script-make_default-ordered] Error 2

下面参考这两篇文章可以解决

移植Qt-4.8.5出现undefined reference to '__sync_sub_and_fetch_4'解决方法

基于嵌入式Linux下GCC编译器__sync_sub_and_fetch_4错误的解决心得

参考第一篇操作,第二篇下载gcc-4.6.0.tar.gz

如果能解决掉undefined reference to `__sync_sub_and_fetch_4'再好不过了,但是我的错误没有解决掉。知道是gcc编译器版本太低的原因,所以只能换高版本的编译器。换成了友善之臂的arm-linux-gcc-4.4.3,安装方法网上有很多。使用4.4.3版本最终解决掉了所以错误,make顺利完成。

最后安装,sudo make install
 

配置环境变量

export QWS_DISPLAY=Transformed:Rot0:mmWidthxxx:mmHeight120
#export QWS_DISPLAY="linuxfb:mmHeight=140:mmWidth=48"
#export QWS_SIZE="800x480"
#export QWS_DISPLAY=Transformed:Rot180 

export TSLIB_ROOT=/usr/sendinfo/tslib 
export TSLIB_TSDEVICE=/dev/input/event10 
export QWS_MOUSE_PROTO=tslib:/dev/input/event10 
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

export QTDIR=/opt/qte-arm
export QPEDIR=/opt/qte-arm
export PATH=$QTDIR/bin:$PATH

export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH

#export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/event1

另:

在QT4下有以下环境变量配置触摸屏和鼠标事件:QWS_MOUSE_PROTO
当支持触摸屏时需要配置:export QWS_MOUSE_PROTO="tslib:/dev/input/event0"
当需要支持鼠标时需要配置:export QWS_MOUSE_PROTO="MouseMan:/dev/input/mouse0"
当需要同时支持触摸屏和鼠标时则需要配置成:export QWS_MOUSE_PROTO="tslib:/dev/input/event0 MouseMan:/dev/input/mouse0"
但是对于USB鼠标是可以热插拔的,所以,在配置支持USB鼠标时不能使用mouse0,因为在USB拔出后,mouse0设备节点就没有了。
这时需要配置如下:
                            export QWS_MOUSE_PROTO="tslib:/dev/input/event0 MouseMan:/dev/input/mice"
或者    
                            export QWS_MOUSE_PROTO="tslib:/dev/input/event0 MouseMan:/dev/mice" 
这时因为只要配置了鼠标支持就会有/dev/mice和/dev/input/mice节点,不受热插拔事件影响,而每个鼠标事件都会往该节点发送。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Building on: linux-g++ (x86_64, CPU features: mmx sse sse2) Building for: linux-aarch64-gnu-g++ (arm64, CPU features: neon) Target compiler: gcc 6.3.1 Configuration: cross_compile use_gold_linker compile_examples enable_new_dtags largefile neon precompile_header shared rpath release c++11 c++14 concurrent dbus reduce_exports stl Build options: Mode ................................... release Optimize release build for size ........ no Building shared libraries .............. yes Using C standard ....................... C11 Using C++ standard ..................... C++14 Using ccache ........................... no Using gold linker ...................... yes Using new DTAGS ........................ yes Using precompiled headers .............. yes Using LTCG ............................. no Target compiler supports: NEON ................................. yes Build parts ............................ libs Qt modules and options: Qt Concurrent .......................... yes Qt D-Bus ............................... yes Qt D-Bus directly linked to libdbus .... no Qt Gui ................................. yes Qt Network ............................. yes Qt Sql ................................. yes Qt Testlib ............................. yes Qt Widgets ............................. yes Qt Xml ................................. yes Support enabled for: Using pkg-config ....................... yes udev ................................... no Using system zlib ...................... yes Qt Core: DoubleConversion ....................... yes Using system DoubleConversion ........ no GLib ................................... no iconv .................................. yes ICU .................................... no Tracing backend ........................ Logging backends: journald ............................. no syslog ............................... no slog2 ................................ no Using system PCRE2 ..................... no Qt Network: getifaddrs() ........................... yes IPv6 ifname ............................ yes libproxy ............................... no Linux AF_NETLINK ....................... yes OpenSSL ................................ yes Qt directly linked to OpenSSL ........ no OpenSSL 1.1 ............................ no DTLS ................................... yes SCTP ................................... no Use system proxies ..................... yes Qt Gui: Accessibility .......................... yes FreeType ............................... yes Using system FreeType ................ no HarfBuzz ............................... yes Using system HarfBuzz ................ no Fontconfig ............................. no Image formats: GIF .................................. yes ICO .................................. yes JPEG ................................. yes Using system libjpeg ............... yes PNG .................................. yes Using system libpng ................ no EGL .................................... no OpenVG ................................. no OpenGL: Desktop OpenGL ....................... no OpenGL ES 2.0 ........................ no OpenGL ES 3.0 ........................ no OpenGL ES 3.1 ........................ no OpenGL ES 3.2 ........................ no Vulkan ................................. no Session Management ..................... yes Features used by QPA backends: evdev .................................. yes libinput ............................... no INTEGRITY HID .......................... no mtdev .................................. no tslib .................................. no xkbcommon .............................. no X11 specific: XLib ................................. no EGL on X11 ........................... no QPA backends: DirectFB ............................... no EGLFS .................................. no LinuxFB ................................ yes VNC .................................... yes Mir client ............................. no Qt Sql: SQL item models ........................ yes Qt Widgets: GTK+ ................................... no Styles ................................. Fusion Windows Qt PrintSupport: CUPS ................................... no Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. no OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite2 ................................ no SQLite ................................. yes Using system provided SQLite ......... no TDS (Sybase) ........................... no Qt Testlib: Tester for item models ................. yes Qt SerialBus: Socket CAN ............................. yes Socket CAN FD .......................... yes Qt QML: QML network support .................... yes QML debugging and profiling support .... yes QML sequence object .................... yes QML list model ......................... yes QML XML http request ................... yes QML Locale ............................. yes QML delegate model ..................... yes Qt Quick: Direct3D 12 ............................ no AnimatedImage item ..................... yes Canvas item ............................ yes Support for Qt Quick Designer .......... yes Flipable item .......................... yes GridView item .......................... yes ListView item .......................... yes TableView item ......................... yes Path support ........................... yes PathView item .......................... yes Positioner items ....................... yes Repeater item .......................... yes ShaderEffect item ...................... yes Sprite item ............................ yes Qt Scxml: ECMAScript data model for QtScxml ...... yes Qt Gamepad: SDL2 ................................... no Qt 3D: Assimp ................................. yes System Assimp .......................... no Output Qt3D Job traces ................. no Output Qt3D GL traces .................. no Use SSE2 instructions .................. no Use AVX2 instructions .................. no Aspects: Render aspect ........................ yes Input aspect ......................... yes Logic aspect ......................... yes Animation aspect ..................... yes Extras aspect ........................ yes Qt 3D Renderers: OpenGL Renderer ........................ yes Qt 3D GeometryLoaders: Autodesk FBX ........................... no Qt Wayland Client ........................ no Qt Wayland Compositor .................... no Qt Bluetooth: BlueZ .................................. no BlueZ Low Energy ....................... no Linux Crypto API ....................... no WinRT Bluetooth API (desktop & UWP) .... no Qt Sensors: sensorfw ............................... no Qt Quick Controls 2: Styles ................................. Default Fusion Imagine Material Universal Qt Quick Templates 2: Hover support .......................... yes Multi-touch support .................... yes Qt Positioning: Gypsy GPS Daemon ....................... no WinRT Geolocation API .................. no Qt Location: Qt.labs.location experimental QML plugin . yes Geoservice plugins: OpenStreetMap ........................ yes HERE ................................. yes Esri ................................. yes Mapbox ............................... yes MapboxGL ............................. no Itemsoverlay ......................... yes QtXmlPatterns: XML schema support ..................... yes Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux ........................ yes OpenAL ................................. no PulseAudio ............................. no Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. no Windows Media Foundation ............... no Qt Tools: QDoc ................................... no Qt WebEngine: Embedded build ......................... yes Pepper Plugins ......................... no Printing and PDF ....................... no Proprietary Codecs ..................... no Spellchecker ........................... yes Native Spellchecker .................... no WebRTC ................................. no Use System Ninja ....................... no Geolocation ............................ yes WebChannel support ..................... yes Use v8 snapshot ........................ yes Kerberos Authentication ................ no Building v8 snapshot supported ......... yes Use ALSA ............................... no Use PulseAudio ......................... no Optional system libraries used: re2 .................................. no icu .................................. no libwebp, libwebpmux and libwebpdemux . no opus ................................. no ffmpeg ............................... no libvpx ............................... no snappy ............................... no glib ................................. no zlib ................................. yes minizip .............................. no libevent ............................. no jsoncpp .............................. no protobuf ............................. no libxml2 and libxslt .................. no lcms2 ................................ no png .................................. no JPEG ................................. no harfbuzz ............................. no freetype ............................. no x11 .................................. no Required system libraries: fontconfig ........................... no dbus ................................. no nss .................................. no khr .................................. no glibc ................................ yes Required system libraries for qpa-xcb: libdrm ............................... no xcomposite ........................... no xcursor .............................. no xi ................................... no xrandr ............................... no xtst ................................. no Note: Also available for Linux: linux-clang linux-icc

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值