准备前提
1、参考 https://blog.csdn.net/baidu_38601468/article/details/121595642
2、X210开发板,连接挂载上NFS。
开始
1、把ubuntu下安装的QT的库复制到开发板中
在rootfs/ 下创建一个目录存放QT的库 如,mkdir QT5.6.2
然后在把ubuntu下安装的QT的库复制到该目录下
cp /opt/QT5.6.2/lib/ ./ -rf
还要把qt的插件目录plugins拷贝过去
cp /opt/QT5.6.2/plugins/ ./ -rf
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
可以把上面的语句放到开发板的/etc/profile中,这样每次启动就会执行。
3、测试
把编译生成qt程序cp到开发板的目录下执行。
报错1:./test1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
分析解决:缺少libstdc++.so.6 库,可以到ubuntu下的交叉编译链下搜索,然后复制到开发板。
zcc@ubuntu:/usr/local/arm/arm-2009q3$ grep -rl "libstdc++.so.6*"
arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12
arm-none-linux-gnueabi/libc/thumb2/usr/lib/libstdc++.so.6.0.12
arm-none-linux-gnueabi/libc/armv4t/usr/lib/libstdc++.so.6.0.12
share/doc/arm-arm-none-linux-gnueabi/info/gccinstall.info
share/doc/arm-arm-none-linux-gnueabi/html/gccinstall/specific.html
share/doc/arm-arm-none-linux-gnueabi/html/getting-started/chap-release.html
zcc@ubuntu:/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/usr/lib$ cp libstdc++.* ~/x210/porting_x210/rootfs/rootfs/usr/lib/
再次到开发板下运行测试程序。开发板出现变化。但是开发板控制台还是报错。
报错2:QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
分析解决:网上一些帖子说是缺少一个运行时库preloadable_libiconv.so,交叉编译得到这个后放进去/lib目录下即可。参考:http://blog.csdn.net/wuyu92877/article/details/52472810
配置
./configure -prefix=$PWD/_install --host=arm-none-linux-gnueabi #注意这里的_install是安装目录
编译
make CROSS_COMPILE=arm-linux-none-gnueabi- ARCH=arm
安装
sudo make install
这样安装会报错误:../libtool: line 1093: arm-none-linux-gnueabi-ranlib: command not found
因为当sudo时,将丢失PATH环境变量,所以,可以切换到root下进行安装 make install
。
最后把_install/lib目录下的preloadable_libiconv.so拷贝到开发板中的库目录,,然后在开发板中导出路径即可。
zcc@ubuntu:~/x210/QT5.x_Porting/libiconv-1.14/_install/lib$ cp preloadable_libiconv.so ~/x210/porting_x210/rootfs/rootfs/lib/
在profile中加入下面:
export LD_PRELOAD=/lib/preloadable_libiconv.so
重启开发板,执行qt测试程序,不再报错。成功。
Finsh !