不使用qtcreator写一个简单的程序验证QT移植情况

说明:继上一次移植完QT后,说写个不使用qtcreator写一个简单的程序验证QT移植情况来着,奈何一直没有合适的时间,今天它终于来了,这里也是做个记录,方便自己忘记了回来看看。本文将写一个简单的程序来验证之前一直qt的使用情况,因为不使用qtcreator ,所以主要就是使用qmake来编译工程,生成makefile进行交叉编译,得到可执行的qt文件,本文还会记录一些小编在验证过程中遇到的问题和解决办法,相信大家也可能会遇到的。

先在自己的目录下创建文件夹,我这里在/home/xjchen/fullhan/mc6670_sdk下创建一个名为 test1 的文件夹,在里面创建一个 main.cpp 的文件,编写下面的简单的 Qt 代码。

在main.cpp写入程序:

#include <QApplication>
#include <QtWidgets>
int main(int argc, char *argv[])
{

    QApplication app(argc, argv); 

    QWidget window;
    window.resize(250, 150);
    window.setWindowTitle("Hello, world!");
    window.show();

    return app.exec();
}

在终端输入qmake编译: qmake -project

然后输入:qmake

到这里,可能会有小伙伴遇到输入qmake指令后,发现qmake找不到的情况了,如果没有那当我没说哈哈哈,实不相瞒我也遇到了,后来发现是因为直接在当前目录输入是找不到qmake的,后面我就依次去找qmake的所在的路径,可使用指令,查找它的路径

终端:find -name "qmake"

相信大家已经找到了,那么我们这就得带路径使用qmake啦!

在终端输入qmake编译: /usr/local/qt5.9/bin/qmake -project (带自己qmake所在的地址进行编译,不然会找不到qmake)

会生成一个 test1.pro 文件。test1 为我们的工程文件夹名

会生成一个 test1.pro 文件。test1 为我们的工程文件夹名

再次通过终端编译:  /usr/local/qt5.9/bin/qmake  (带自己qmake所在的地址进行编译)

test1 目录下又会多出来一个 Makefile 文件

在终端输入 make 进行编译,遇到错误fatal error: QApplication: No such file or directory,发现QApplication模块找不到路径

通过查找,发现QApplication确实也在/usr/local/qt5.9/include/QtWidgets的路径里面,怀疑问题是因为Makefile里面缺少了这个路径,导致找不到函数 打开Make file查看,确实如此

解决方法:手动添加上路径:-I/usr/local/qt5.9/include/QtWidgets

再次make编译,没有报前面的错误了,报了一个新的错误,是一大堆模块显示未定义,如图所示: 

 大概原因:libQt5Widgets.so动态链接库没有加入到编译选项里面

解决方法:在Makefile添加参数

LIBS     = $(SUBLIBS) /home/ab/miniconda3/envs/myenv/lib/libQt5Gui.so /home/ab/miniconda3/envs/myenv/lib/libQt5Core.so -L/usr/lib64 -lGL -lpthread -lQt5Gui -lQt5Widgets

通过与自己的Makefile对比,发现少了,-lQt5Widgets的参数

 手动添加-lQt5Widgets的参数,再次make编译,发现不在报刚刚的错误

看到以上没有报什么错,那么恭喜你,接近成功的一半了

在终端输入 make 来进行编译会生成一个 main.o 和 test1 的可执行文件。

接着:将可执行文件test1拷贝到开发板/home/public/nfsshare/xjchen/test(自己的路径)

终端输入:cp test1 /home/public/nfsshare/xjchen/test

发现开发板上面的test目录没有权限,终端输入:chmod 777 test给予操作权限

再次执行cp test1 /home/public/nfsshare/xjchen/test,拷贝成功

登录开发板  

进入:cd 进入刚刚拷贝文件的路径中

输入配置环境:

export LD_LIBRARY_PATH=/nfs/xjchen/lib/lib

export QT_QPA_PLATFORM_PLUGIN_PATH=/nfs/xjchen/lib/plugins

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

export QT_DEBUG_PLUGINS=1

开发板终端输入: echo $LD_LIBRARY_PATH 查看路径配置情况

配置成功!!!!

终端输入:./test1,运行程序,运行后遇到以下错误,哎!又出现错误了,不过不要紧,继续解决

发现lib的库里面是缺少了libstdc++.so.6动态库,导致开发环境在对应的路径下找不到此库而报错 ,好那么知道原因了,就好解决了!

解决方法:去到/opt/molchip/aarch64-linux-gnu/aarch64-linux-gnu/libc/lib编译器的库里找到libstdc++.so.6,这里主要是看自己交叉编译器存储的位置,去里面找到你的交叉编译器,然后在/libc/lib里面找到libstdc++.so.6这个静态库,将其拷贝到刚刚配置的export LD_LIBRARY_PATH=/nfs/xjchen/lib/lib这个路径里面

这个时候再次运行test1文件就没有什么报错啦!

好啦!到这里也表示移植基本没有什么问题了,是能用的了。以上便是小编在移植QT和验证QT移植情况的过程中所遇到的一些情况,如果觉得对你有帮助,麻烦点个小赞哦,您的支持是我最大的动力!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值