QT移植(tslib1.4、qt5.3.2、ubuntu14.04)

1、tslib1.4移植
1.1.1、tslib1.4源码下载地址
1.1.2、解压tslib1.4源码:tar -zxvf tslib-1.4.tar.gz
1.1.3、执行命令:./autogen.sh 若提示./autogen.sh: 4: ./autogen.sh: autoreconf: not found错误,
则autoconf工具没有安装:sudo apt-get install autoconf automake libtool。
1.1.4、echo “ac_cv_func_malloc_0_nonnull=yes” > tmp.cache
1.1.5、mkdir /opt/tslib tslib的安装目录
1.1.6、./configure --prefix=/opt/tslib --host=arm-none-linux-gnueabi --cache-file=arm-none-linux-gnueabi.cache ac_cv_func_malloc_0_nonnull=yes
配置完成之后自动生成一个Makefile
1.1.7、make 编译
若出现如下错误:
ts_test.o: In function main': ts_test.c:(.text+0x51c): undefined reference torpl_malloc’
fbutils.o: In function open_framebuffer': fbutils.c:(.text+0xbb4): undefined reference torpl_malloc’
collect2: ld returned 1 exit status
则在配置的时候添加上ac_cv_func_malloc_0_nonnull=yes即可以解决该问题
1.1.8、make install 安装到/opt/tslib/目录下面了。
1.1.9、部署:需要动态库文件、配置文件、bin文件
简单粗暴的做法就是将/opt/目录下的tslib这个文件夹整个复制到开发板中的根目录下,然后删除一些
不需要的内容:/tslib/include文件夹、/tslib/lib/libts.la文件
1.2.0、导出到环境变量:
export TSLIB_TSDEVICE=/dev/input/event2 这个设备文件必须是触摸屏设备的设备文件
export TSLIB_CALIBFILE=/tslib/etc/pointercal 这个文件是校准之后生成的校准文件
export TSLIB_CONFFILE=/tslib/etc/ts.conf 配置文件
export TSLIB_PLUGINDIR=/tslib/lib/ts 插件
export TSLIB_CONSOLEDEVICE=none 不要控制台
export TSLIB_FBDEVICE=/dev/fb0 开发板的frambuffer是这个文件
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tslib/lib
export TS_INFO_FILE=/sys/class/input/input2/uevent 自动安装驱动有关的
每次系统运行时都要导出环境变量,很麻烦。所以我们把这几行内容放到/etc/profile文件中,这个文件
是系统每次启动的时候都会执行该文件。
1.2.1、运行测试:
1.2.1.1、错误:No raw modules loaded. ts_config:No such file or directory.
这是因为/tslib/etc/ts_config文件中的# module_raw input未打开,删除#就可以打开这个选项。

2、qt5.3.2移植
2.1.1、https://download.qt.io/archive/qt/ QT源代码下载地址
解压源码包到当前目录:tar -zxvf qt-everywhere-opensource-src-5.6.2.tar.gz
http://www.qt.io/ QT官网网址
2.1.2、创建安装目录: mkdir /opt/Qt5.6.2
2.1.3、配置相应的qmake:qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
在这个配置文件中添加如下三行:
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
将这个配置文件中的如下内容修改一下:
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc
QMAKE_CXX = arm-linux-gnueabi-g++
QMAKE_LINK = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++
修改成如下:
# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc -lts -lts是添加tslib的依赖
QMAKE_CXX = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++ -lts
将如下内容:
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
QMAKE_NM = arm-linux-gnueabi-nm -P
QMAKE_STRIP = arm-linux-gnueabi-strip
成如下内容:
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_NM = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = arm-none-linux-gnueabi-strip
2.1.4、编译前的配置:
./configure -prefix /opt/QT5.6.2 \ 安装qt的目录
-opensource \ 开源
-confirm-license \ license
-release \ release
-shared \ 共享属性
-accessibility \ accseeibility
-c++std c++98 \ C++98标准
-xplatform linux-arm-gnueabi-g++ \ 指出使用qtbase/mkspecs/linux-arm-gnueabi-g++/目录下
的配置文件qmake.conf
-qpa linuxfb \ linuxfb
-linuxfb \ linuxfb
-qreal float \ float
-pch \ pch
-qt-zlib \ zlib
-qt-libjpeg \ 要libjpeg这个库
-qt-libpng \ libpng
-no-sse2 \ 去掉sse2这个库
-no-largefile \ largefile
-no-qml-debug \ debug
-no-glib \ glib
-no-gtkstyle \ gtkstyle
-no-opengl \ opengl
-nomake tools \ tools
-nomake examples \ examples
-tslib \ 要tslib
-skip qt3d -skip qtcanvas3d -skip qtdoc -skip qtwayland \ qtwayland
-I /opt/tslib/include \ -I指tslib出头文件的目录
-L /opt/tslib/lib -L指出tslib动态库的目录
配置过程中出现如下错误:Could not find qmake configuration file linux-arm-gnueabi-g++.
原因是:全路径名中含有中文,解决方法是将qt源码包重新解压到不含中文的路径中,
2.1.5、编译make
2.1.5.1、编译过程中出现的错误:qlibrary_unix.cpp:(.text+0x8): undefined reference to `dlsym’
解决方法:在qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件中的编译器
后面加上如下内容
QMAKE_CC = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc -lts -ldl
QMAKE_CXX = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++ -lts -ldl
QMAKE_LINK = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++ -lts -ldl
QMAKE_LINK_SHLIB = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++ -lts -ldl
2.1.5.2、出现如下错误: undefined reference to ‘__sync_sub_and_fetch_4’,参考
错误原因及解决方法:缺少一个库liblinux-atomic.a
1、apt-get install libtool
2、libtool --tag=CC --mode=compile arm-linux-gcc -g -O2 -MT linux-atomic.lo -MD -MP -MF linux-atomic.Tpo -c -o linux-atomic.lo linux-atomic.c
3、mkdir /opt/linux-automic
4、在QT源码下修改:./qtscript/src/script/Makefile,在LIBS = 的结尾添加
-L/opt/linux-automic -llinux-atomic
2.1.6、安装:make install,在/opt/QT5.6.2目录中可以看到安装好的
2.1.7、将安装好的Qt环境部署到开发板中。

你可能感兴趣的:(linux)