1、rootfs中部署QT库
(1)QT库复制
1. 把/home/liu/qt/qt5.6/install_file 下的 lib 整个复制到开发板的根文件系统中
cp /home/liu/qt/qt5.6/install_file/lib /home/liu/ARM/rootfs/rootfs2/QT5.6.2/
2. 把/home/liu/qt/qt5.6/install_file 下的 plugins 整个复制到开发板的根文件系统中
cp /home/liu/qt/qt5.6/install_file/plugins /home/liu/ARM/rootfs/rootfs2/QT5.6.2/
(2)导出环境变量
vi /etc/profile
export QTEDIR=/QT5.6.2
 export LD_LIBRARY_PATH=/QT5.6.2/lib:$LD_LIBRARY_PATH
 export QT_QPA_PLATFORM_PLUGIN_PATH=/QT5.6.2/plugins   
 export QT_QPA_FONTDIR=/QT5.6.2/lib/fonts            
 export QT_QPA_FB_TSLIB=1    
 export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event2          
 export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=1024x600:mmSize=1024x600:offset=0x0:tty=/dev/tty1
2、开发板中运行QT应用
 (1)拷贝和执行
 (2)问题解决和现象观察
问题1:找不到libQtxx            
 解决:部署QT库等文件并导出环境变量
问题2:error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
 解决:C++库在交叉编译工具链中,复制进去即可。
cp /usr/local/arm_x210/bianyilian/arm-2009q3/arm-none-linux-gnueabi/libc/thumb2/usr/lib/libstdc++*so* /home/liu/ARM/rootfs/rootfs2/lib/ -f
  
问题3:QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
 QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
 解决:缺少一个运行时库preloadable_libiconv.so,交叉编译得到这个后放进去/lib目录下即可。 
步骤1:
cp /mnt/hgfs/朱有鹏/a/libiconv-1.14.tar.gz /home/liu/qt/qt5.6/depend/libiconv
步骤2:
./configure -prefix=$PWD/_install -host=arm-linux-gnueabihf
解压
在源码下:make
make后的问题:
 ./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
  _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
 解决:
在/home/liu/qt/qt5.6/depend/libiconv/libiconv-1.14/srclib/stdio.h 中
找到那一行,注释掉。
在源码下:再次make
没有错误
错误:编译好的库是intel80386架构的,不是ARM的,不能用,要交叉编译才行。
 解决:
make distclean
先看配置好的Makefile,找交叉编译工具链的全局变量。但是本项目的Makefile中没有CC等这些定义,像这种一般就是通过环境变量来设置的。
先删除整个文件,重新解压一份
./configure -prefix=$PWD/_install --host=arm-none-linux-gnueabi
 make CROSS_COMPILE=arm-linux-none-gnueabi- ARCH=arm
make install
结果:install 后的文件在 _install 下面

把库文件复制到根文件系统中:
# cp preloadable_libiconv.so /home/liu/ARM/rootfs/rootfs2/lib/ -r
  
vi /etc/profile中加上这几句
export LD_PRELOAD=/lib/preloadable_libiconv.so
最后:
可以在开发板上正常显示
交叉编译libiconv, 编译libiconv错误提示gets相关的,
注意一个QT项目的文件包括:
myapp/object1/# ls
 build-test1-Qt5_6_2_arm-Debug  test1
 myapp/object1/# cd build-test1-Qt5_6_2_arm-Debug
myapp/object1/build-test1-Qt5_6_2_arm-Debug# ls
 main.o  mainwindow.o  Makefile  moc_mainwindow.cpp  moc_mainwindow.o  test1  ui_mainwindow.h
 myapp/object1# cd ..
 myapp/object1# cd test1/
=myapp/object1/test1# ls
 main.cpp  mainwindow.cpp  mainwindow.h  mainwindow.ui  test1.pro  test1.pro.user
 =myapp/object1/test1# gedit test1.pro
这个就是最后生成的可执行文件名











