赞
踩
我们之前使用win下的,qt自制软件时,当想给别人用的时候,就要经理打包等等,也许是时间过得有些许久,感觉没那么难,现在在Linux下,还是有很多不会的地方,需要学习。也有很多细节值得记录吧。
在win下,使用时,大概是使用关键,直接在软件上点点,久完事了,现在在Linux上,更多感觉很多事情要自己亲力亲为,使用命令行的方式。
打个部分,win就像你去餐厅点餐,菜单上有什么,你就只能点什么,而Linux,有点像你去到后厨,直接自己定制菜品,文件目录更加合理,原料啥的直接自己组合。这可能也是Linux是比较适合开发的,而win更多适合娱乐。
自己打算分为三章,其实主要是三件事情。
这里其中第三篇还没有做,第二步自己按照参考文章成功实现了。
实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样,另外也发现其他小伙伴,也会问些问题,之前有人大致环境装的和我差不多,当时是win的环境,结果编译遇到问题,就跑过来问是不是环境不对,这还是要具体问题具体分析的,当时看了看,发现是其他问题,总的来说,环境还是挺重要的。
系统环境:
环境问题还是要注意下的,不同环境下可能还真的可能不一样。
QT软件版本环境: Linux qt环境
自己开始学习的时候,在Linux下,编译什么,几乎完全无从下手,多少有点懵逼的状态,就是那种,要做什么东西,需要某种技术时,你了解一些,但是实际操作时,发现计划无从下手,也不知道该参照什么。
言归正传,我们做软件生成,主要是我们自己编好的软件,想在其他Linux上运行,或者说给他人使用,为了达到这个目的,我们使用qt这个软件,编辑软件,但是运行的时候,其实qt为我们搭建好了环境。我还真傻傻地将编译软件直接放到另一个电脑上,结果是当然不运行。
所以我们需要生成,主要是使用工具linuxdeployqt,查网上当然不只是这一个工具。
linuxdeployqt是一个自动化工具,可以帮助你将应用程序和所有依赖打包成一个可移植的AppImage。AppImage是一个在Linux上广泛使用的格式,它允许应用程序以单一文件的形式分发,无需安装即可运行。
当然使用这样的工具,有比较好的解释文档。
https://doc.appimage.cn/docs/linuxdeployqt/
这其中软件最后使用起来感觉还是挺好的,但是配环境啥的,或者在安装软件时,其实遇到很多问题,之前开发在win下较多,在linux下,命令行报错,有时候还是稍微看着头疼的,多少有点不知所措。
所以使用软件的难点,倒不如说,是软件安装和使用过程中,解决所遇到问题。
学习他人文章,至少有个大致规划,知道哪步骤该什么,如下,为自己参照的文章。
https://blog.csdn.net/zyhse/article/details/106381937
每次实验,都习惯自己从新创建一个工程,这样有什么问题,还能发现,就是自己走完这些步骤,也能知道细节,留下工程文件。
这里可以看之前写的文章,也比较细了,没必要重复造轮子。
【Linux20.04-qt5.12.4软件安装与初步使用-qt在Linux使用-记录-笔记】
这里我们直接选择UI界面。
如下,我们简单写点东西,不让空唠唠的只有空白界面。
这个之前也说明过,简单说明三个步骤。
参考文章:【QT 5 +Linux下验证+显示软件图标+串口转换器使用+串口样例】
需要准备在显示图标,可以在相关网站上下一个。
如下为本工程实际实现,上述步骤想看更多细节,建议去看看文章。
这块参照文章说的挺好了,直接参照相关步骤。
https://github.com/probonopd/linuxdeployqt/releases
使用浏览器不同,或者实际时间不同,界面会有不一样情况。
下载到下载目录后,以下为自己当时操作指令截图
890 mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt //更改简短的名字
891 ls //查看
892 chmod 777 linuxdeployqt //给权限
893 ls
894 mv linuxdeployqt /usr/local/bin/ //移动到对应目录
895 sudo mv linuxdeployqt /usr/local/bin //需要sudo权限
896 linuxdeployqt --version //查看版本
如果没有什么问题的话,会出现以下提示,版本情况。
指令如下,我们要在文件里填写一些路径。
vim ~/.bashrc
我自己的路径如下
export PATH=/home/wjl/Qt5.14.2/5.14.2/gcc_64/bin:$PATH
export LIB_PATH=/home/wjl/Qt5.14.2/5.14.2/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH=/home/wjl/Qt5.14.2/5.14.2/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH=/home/wjl/Qt5.14.2/5.14.2/gcc_64/qml:$QML2_PATH
export LD_LIBRARY_PATH=/home/wjl/Qt5.14.2/5.14.2/gcc_64/lib:$LD_LIBRARY_PATH
这块在配置环境变量的时候,自己不免有个疑问,就是自己配置环境不确定对不对的,有点不敢确定是不是这个目录。
这个其实跟当初装qt这个软件有关系,当时你装qt的时候,会选择一个路径,这个理论上你应该记得,如果不记得一般应该是想参照博主一样,在opt目录下
如下,按照博主的写法,qt安装的 “根目录/opt” 目录在下面
而我自己其实是安装在的用户下面了。
如下,找到这样的目录,
然后一层层下下找。基本都在gcc_64目录下
弄好后,使文件立即生效
source ~/.bashrc
然后查询下,看看设置是否正确
qmake -v
如果读过参考文章,会发现我这里配置环境变量和参考博主还是有区别的,这块就有 LD_LIBRARY_PATH 环境变量问题,这块当时报错了,因为当时自己不确定是哪个路径,后调试下,才过吧,这块还是要注意下。
要查看LD_LIBRARY_PATH环境变量的内容
echo $LD_LIBRARY_PATH
这个命令会显示LD_LIBRARY_PATH变量当前的值。如果这个变量没有被设置,命令可能不会显示任何内容。
说明:LD_LIBRARY_PATH是一个环境变量,用于指定动态链接器搜索共享库的额外目录。当你运行一个程序时,系统会在这些目录中查找所需的共享库。
如果你需要临时设置或修改这个变量,你可以使用如下命令:
export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH
这个命令会将/path/to/library添加到LD_LIBRARY_PATH的当前值之前。
应该用希望添加的实际库路径替换/path/to/library。
如下为当时我实际操作截图
我已经将这个 LD_LIBRARY_PATH 环境变量变量添加到了 ~./bashrc中了。不过这个问题还是要注意下。
完成上述步骤后,就可以使用软件了,如果一切正常,会遇到不少报错。至少我自己是如此。看见报错多少有些头大。
我们先查看下qt将生产文件给我们放到哪里了。我这里分辨率有些问题,不过能帮你确定生产后的放在哪里。
然后进入生成目录,如下为生成的目录以及文件,读者根据自己实际情况进入相关目录。
我们新建一个两层目录 testSetup,然后将qt生产文件中“tees1_hello”复制到里面,这里可以根据自己实际情况,更改。然后将使用命名。
mkdir testSetup
cd test
mkdir Test
复制完成后,执行命令
linuxdeployqt test1_hello -appimage
相关配置和编译问题解决后,应该会如下。
我们右键点出终端运行下。
要找个没有本机环境的运行。
(1)工程代码
https://download.csdn.net/download/qq_22146161/88858979
(2)生成文件
https://download.csdn.net/download/qq_22146161/88858098
上述这个是x86上使用的,意思是底层是x86,像在ARM上是无法运行的。
这块特意上网查了下,在处理权限方面,理解chmod +x与chmod 777之间的差别很重要。
总的来说,对于一些文件而言,chmod +x通常就足够了,因为你只需要确保文件是可执行的。使用chmod 777不仅不必要,而且从安全角度来看,也是不推荐的。
如下,是网上找到资料,对于IDD的解释。
使用ldd,可以查看一个可执行文件或共享库文件所依赖的所有共享库,以及这些库的路径。这对于调试程序或确保程序有正确的库依赖非常有用,特别是当你遇到由于缺少库或库版本不匹配导致的运行时错误时。
ldd program
注意事项:
如下是我查看本工程软件的显示,大概反馈如下图
我当时不是编译这个软件,是另一个软件,但是问题还是相似的,如下为截图,看着有点多少蒙。。。
问题罗列如下。
(1)桌面文件和图标文件缺失:ERROR: Desktop file missing, creating a default one (you will probably want to edit it)
(2)qmake路径未指定:ERROR: Icon file missing, creating a default one (you will probably want to edit it)
(3)库版本不匹配:libQt5Core.so.5: version `Qt_5.14’ not found
(4)IDD配置库不对:ERROR: Please ensure that all libraries can be found by ldd. Aborting. ERROR: ldd outputLine:
其实一路下来我们已经解决一些问题了,写桌面图标在下一篇类,上面问题,是开始运行是遗留的,猜测你可能遇到,这个流程会大致解决问题。也是问题太多,也不太好整理了。。
还是有很多问题的,调试的时候,从不会到会些,有很多问题其实还是有些忽略,无法记录下的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。