• 6141阅读
  • 5回复

arm板子上运行Qt程序,提示:No such file or directory [复制链接]

上一主题 下一主题
离线chillykill
 

只看楼主 倒序阅读 楼主  发表于: 2017-03-23
如题,在ubuntu上交叉编译了Qt5.4的库,然后用Qt Creator分别写了一个Qwidget和Qml的应用,用交叉编译生成的构建编译后,生成了两个程序文件:helloqt 和 qml_arm_test
将交叉编译生成的qt库拷贝到嵌入式系统镜像的usr/local/qte-arm和usr/lib下,helloqt 和 qml_arm_test拷贝系统镜像的/home下,然后重新打包成系统镜像xxx.rootfs.tar.bz2。
系统升级,启动后,在/home目录下运行:./helloqt 提示:-sh: ./helloqt: No such file or directory
为什么会这样啊?这些步骤都是从天嵌开发板的资料里学到的,可就是不能识别成qt程序。
求大师指点!
离线兵317

只看该作者 1楼 发表于: 2017-03-23
建议检查下/etc/profile里面的内容
离线chillykill

只看该作者 2楼 发表于: 2017-03-23
我没有去设置环境变量,也不知道该怎么设置。
qt的程序为何能够通过 ./xxx 来被识别并执行?
离线bj-alex

只看该作者 3楼 发表于: 2017-03-23
首先,确认你生成的执行文件符合开发板的环境。可以用file命令查看。
其次,如一楼所说,打开/etc/profile,添加下面几行:
export QT_ROOT=/opt/qt-5.7.0  
export LD_LIBRARY_PATH=$QT_ROOT/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins                                              
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0                                                      
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts


::为什么新用户注册30分钟内不能发帖!!
1条评分金钱+10
chillykill 金钱 +10 给出了问题原因的重要线索 2017-03-23
离线chillykill

只看该作者 4楼 发表于: 2017-03-23
我忘记说了,在天嵌提供的开发板及其提供的镜像,我把我用qt5.4交叉编译出来的程序,直接用minicom传输过去,是可用运行起来的。
后来我用freescale提供的ltib和yocto的镜像,如上文中提到的方法却怎么都不能识别。
在yocto(linux3.14)的镜像里,在usr/bin/qt5里也带了一些qt的应用程序,也可以运行起来。环境变量并没有出现上文中提到的,我也尝试设了,也不起作用。
因我是做应用的,并没有yocto的编译环境,实在不行的话,只能自己尝试搭建一个yoctor的编译环境了。
我刚学qt,想问下各位大侠,你们平时怎么开发嵌入式的qt应用?是在ubuntu下用qt creator开发,然后交叉编译?还是直接在yocto或者ltib下编译?
如楼上所说,file命令查看,好像有点线索
不能被识别的查看结果是:
helloqt: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.31, not stripped
file qml_arm_test
qml_arm_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.31, not stripped
而可以识别的查看结果是:
file qmleasing
qmleasing: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=e0fd5e0a0c93fc28c4002648c0a9074aa365af88, stripped
貌似interpreter/lib不同,但不太懂怎么解决,哪位高人可否给予指点?
离线bj-alex

只看该作者 5楼 发表于: 2017-03-27
回 chillykill 的帖子
chillykill:我忘记说了,在天嵌提供的开发板及其提供的镜像,我把我用qt5.4交叉编译出来的程序,直接用minicom传输过去,是可用运行起来的。
后来我用freescale提供的ltib和yocto的镜像,如上文中提到的方法却怎么都不能识别。
在yocto(linux3.14)的镜像里,在usr/bin/qt5里也带了一些qt的 .. (2017-03-23 15:55) 

编译器选择的不对。ld-linux 是PC环境下的,ld-linux-armhf是ARM环境的。你的程序运行环境是什么,就选哪个。
快速回复
限100 字节
 
上一个 下一个