历史上的今天
今天是:2025年02月15日(星期六)
2020年02月15日 | 编译 arm 版的qt
2020-02-15 来源:eefocus
因为项目需要,我们需要在开发板上使用QT开发平台,因此需要编译一个arm版的QT. 在网上找了一些资料,费了几天时间,终于成功了。
第一步,准备源码
先下载QT 源码,在http://qt-project.org/downloads页面,找到Qt libraries 4.8.6 for embedded Linux (230 MB) (Info), down 下来,拷贝到linux系统下。
解压缩,tar -xzvf qt-everywhere-opensource-src-4.8.6.tar.gz
qt 源码将被解压到qt-everywhere-opensource-src-4.8.6下。
第二步,准备编译器
然后安装交叉编译器,我们的arm 平台编译器已经安装好,安装在 /home/xyz/arm/ 目录下。
为了使QT 配置程序能找到我们的编译器,必须把交叉编译器所在的目录放到PATH环境变量上。
export PATH=$PATH:/home/xyz/arm/bin
第三步,配置,编译,安装
然后到QT的源码所在目录下,
再进到qws目录下
cd mkspecs/qws
ls 看一下,有一个适合我们的配置,就是linux-arm-gnueabi-g++ ,如果没有,就自己建一个目录,然后从别的目录下拷贝这两个文件
qmake.conf
qplatformdefs.h
进入到linux-arm-gnueabi-g++目录,看一下qmake.conf 的内容,如下:
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = arm-none-linux-gnueabi-strip
正确,我们就使用这个配置,如果不正确,可以改成自己的编译器的名字。
接下来配置QT, 在QT的源码目录下有一个可执行程序 configure, 运行./configure --help 可以看到详细的配置选项,
为了操作方便,可以写一个脚本文件,文容如下
./configure
-embedded arm
-xplatform qws/linux-arm-gnueabi-g++
-release
-opensource
-fast
-stl
-no-accessibility
-no-scripttools
-no-mmx
-no-multimedia
-no-svg
-no-3dnow
-no-sse
-no-sse2
-no-libmng
-no-libtiff
-no-multimedia
-silent
-qt-libpng
-qt-libjpeg
-make libs
-nomake tools
-nomake examples
-nomake docs
-nomake demos
-nomake translations
-no-nis
-no-cups
-no-iconv
-no-dbus
-no-openssl
-little-endian
-qt-freetype
-depths all
-qt-gfx-linuxfb
-no-gfx-transformed
-no-gfx-multiscreen
-no-gfx-vnc
-no-gfx-qvfb
-qt-kbd-linuxinput
-no-glib
-no-phonon
-no-phonon-backend
-no-webkit
-no-javascript-jit
-no-sql-db2
-no-sql-ibase
-no-sql-mysql
-no-sql-oci
-no-sql-odbc
-no-sql-psql
-no-sql-sqlite
-no-sql-sqlite2
-no-sql-sqlite_symbian
-no-sql-symsql
-no-sql-tds
-no-qt3support
-qt-mouse-linuxinput
-no-mouse-tslib
-no-mouse-linuxtp
-no-script
-no-largefile
保存,取名了qt.config.sh
这个配置几乎把QT裁剪到了最小尺寸,运行此脚本,生成Makefile,
然后gmake, 这个过程很慢,请耐心等待。
然后gmake install, QT 库被安装到 /usr/local/Trolltech/QtEmbedded-4.8.6-arm
第四步,测试QT arm 开发环境
QT arm 版已经编译,安装完成。测试一下QT arm 开发环境
设置环境变量
export ARMQDIR=/usr/local/Trolltech/QtEmbedded-4.8.6-arm
export PATH=$ARMQDIR/bin:$PATH
export MANPATH=$ARMQDIR/man:$MANPATH
export LD_LIBRARY_PATH=$ARMQDIR/LIB:$LD_LIBRARY_PATH
执行qmake -v, 显示以下信息
QMake version 2.01a
Using Qt version 4.8.6 in /usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib
执行which qmake, 显示
/usr/local/Trolltech/QtEmbedded-4.8.6-arm/bin/qmake
编写一个hello world 程序
#include #include int main(int argc,char *argv[]) { qDebug("Hello, welcome to Qt world!"); return 0; } 保存为hello.cpp 执行qmake -project hello.cpp -o hello.pro 生成hello.pro 执行qmake hello.pro 生成Makefile 执行 make, 生成hello.o, hello 这一步遇到一个奇怪的问题,就是如果工作目录下包含了子目录,则运行qmake就会hang在那儿,这不知是不是QT的bug. 第五步,下载到开发板 首先在开发板的linux 系统下建立同名的目录,以便拷贝, /usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib 然后把/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib目录下的文件全部拷贝过去,我是打了一个包,然后用tftp传过去的。 然后把 libstdc++.so.6.0.9 和libz.so.1.2.3 传送到开发板的 /usr/local/lib 目录下, 设置环境变量 LD_LIBRARY_PATH 以便使QT 程序能找到相应的库, export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib:/usr/local/lib 运行QT测试程序 testgui -qws lcd 显示屏上显示出一个窗口界面,和在windows开发环境下显示出的界面基本相同。 至此,算是成功了。不过还没有做对触摸屏的支持。
史海拾趣
|
路灯不同时间段的开关控制 各位单片机之友们,你们好!冒昧的请教一个问题。看看我这个问题该则么解决,用单片机或者其他的吧。 要求:1.传感器2个,并联来感应控制路灯的开关(全亮) 2.LED路灯5个,各1W,控制如下: 早上 7:00--19:00不亮&n ...… 查看全部问答> |
|
我使用S3C2410芯片和K9F1208的FLASH。现在我的EBOOT可以实现直接下载NK.BIN并在RAM中启动,但是无法在FLASH中启动。 超级终端显示如下: TFTP: Desktop losing ACK, block number = 18570, Ack again TFTP: Desktop losing ACK, block number = ...… 查看全部问答> |
|
EE_FPGA_V2.0功能设计如下: 1. LED 2. 按键 3. UART <-> USB 4. NOR FLASH 5. SDRAM 6. SD Module 7. E2PROM 8. 红外模块 9. 总线扩展、IO扩展 为什么设计以上功能的一些说明: 1)LED和按键是经典的输入 ...… 查看全部问答> |
|
在MSP430 的adc模块中我知道VR+,和VR-的选择决定输入信号的范围,现在我要采集一个正负1v的正弦信号,只知道如果用VR+我选择vref+(内部正参考电压)的话可以设置为1.5v或者2.5v。但是,VR-我想用vref--,如果是vref-的话怎么知道他的电压值,是-1.5v ...… 查看全部问答> |
|
设计IPAD充电器电源 普通的手机充电器电源额定电流普遍都小于1A(5V),而IPAD专用充电器的额定电流都在2A。我以前用500mA的手机充电器试图给IPAD充电,结果就是没反应,插上后IPAD连充电标志都没有显示。因此普通手机充电器是无法给IPAD充电。如何 ...… 查看全部问答> |




