Linux
Linux平台开发相关
小鹰信息技术服务部
Tolerance, Diversity. Hit Refresh.
展开
-
Linux命令删除文件和文件夹
【代码】Linux命令删除文件和文件夹。原创 2023-07-30 11:19:13 · 275 阅读 · 0 评论 -
Linux: 设置qmake的Qt版本
Qt开发,qmake会对应一个Qt版本,有时候需要切换这个版本,例如把qmake从Qt5.12切换到Qt5.9, 怎么操作呢?其中第一行的bin目录下面,是有qmake程序的,它用的Qt是5.12.8的。现在需要把qmake切换成5.9.8的,怎样操作呢?成功,已经切换到了5.9.8的qmake。原创 2023-07-30 16:50:41 · 2159 阅读 · 0 评论 -
Qt: 判断字符串是否为数字,是否为整数
Qt开发,有时需要判断一个字符串能否转换成数字,或者整数。原创 2022-11-20 12:51:50 · 4897 阅读 · 0 评论 -
QFontDatabase: Cannot find font directory .../lib/fonts
银河麒麟V10 SP1 2203, 飞腾CPU D2000/8. 安装完Qt 5.9.9之后,程序运行发现只有界面没有文字,提示。1. 从别处找一些字体文件,例如其他Windows电脑上的C:\Windows\Fonts下面的ttf文件。2. 在Qt安装目录的lib文件夹下新建文件夹,名称为fonts。3. 将ttf文件拷贝至../lib/fonts文件夹。4. 终端命令:sudo fc-cache -fv。重新运行程序,显示正常了。原创 2022-11-13 15:51:34 · 1863 阅读 · 0 评论 -
编译xcb
银河麒麟V10 + ARM CPU, 在源码安装Qt5.12.8的时候发现加了-qt-xcb选项之后,会出现如下错误:网上查了一圈,说是要先编译xcb。原创 2022-11-10 23:43:25 · 3389 阅读 · 1 评论 -
Qt报错: /bin/lrelease: Command not found
银河麒麟V10 + ARM CPU。一开始装了qt5.9.9, 发现有点问题,于是又装了qt5.12.8, 在QtCreator中运行程序时报错:/Qt5.12.8/bin/lrelease: Command not found网上找了一些方法,都不起作用。不过还是从一篇讨论中找到了一点启发:Missing lrelease when trying to build with Yocto | Qt Forum后来想起来,用源码编译安装的时候好像最后有一些部分是安装失败的,于是尝试重新编译安装qttools这原创 2022-11-09 18:15:24 · 653 阅读 · 0 评论 -
Qt程序报错:could not find or load the Qt platform plugin “xcb“ in ““.
至此,could not find or load the Qt platform plugin "xcb" in "". 这个现象算是搞清楚了,和xcb和platform没关系,而是库文件引用路径的问题,检查路径即可。无法运行的ArtilleryAimLNX, 大部分都引用了同目录中的库,也就是 ../桌面/aim_exec_599/./这个目录。由于同目录的库被删了,现在可执行文件的库引用自动转向了/usr/lib/arrch64-linux-gun目录,路径里面没有奇怪的符号了。原创 2022-10-31 23:43:40 · 5045 阅读 · 0 评论 -
QtCreator提示:qmlscene未安装
银河麒麟V10,ARM CPU,编译安装Qt 5.9.9. 装完之后,QtCreator中的QtVersions版块提示。重新打开QtCreator观察QtVersions,显示恢复正常,错误提示消失。Qt5.9.9的选项上带有黄色感叹号。原创 2022-10-30 22:35:16 · 2842 阅读 · 1 评论 -
qmake:Could not find command-not-found database
提示Could not find command-not-found database.打开,第一行替换为Qt的实际安装路径。也就是系统没有识别已经安装的Qt。原创 2022-10-30 17:27:23 · 1656 阅读 · 0 评论 -
Qt,Linux: 播放声音(aplay)
Linux下,Qt开发,使用的电脑情况比较复杂,开发机是Intel cpu, 常用的验证机是飞腾(arm)cpu, 客户的目标机也是飞腾(arm)cpu, 但验证机和目标机上情况还不太一样。于是换个思路,既然直接双击音频可以播放,说明OS层面对音频的支持没问题。可以考虑Qt以外的播放功能。直接用QProcess播放的话主线程会卡一下。折腾了很长时间,最终在目标机上搞不定。测试成功,连续播放也不会卡主主线程。成功,声音可以播放。测试成功,可以播放。原创 2022-10-21 00:07:06 · 2075 阅读 · 0 评论 -
Qt: 窗体最小化按钮无效
1. 取消任何关于最小化(minimize)功能的额外代码,例如changeEvent之类,不需要的。此处之前设置了ApplicationModal,是最高的级别,会阻止其他窗体获得焦点。Qt开发,项目修改一段时间后,发现很多窗体的最小化按钮无效,按下去窗体并没有最小化。2. 窗体的windowModality设置为WindowModal。有的窗体最小化了,但是任务栏图标点击之后并没有恢复显示。原创 2022-10-15 15:59:02 · 1052 阅读 · 0 评论 -
Qt: defaultServiceProvider::requestService(): no service found for - “org.qt-project.qt.mediaplayer“
Qt开发,一个播放音频的功能,在开发机(x64)上没问题,但是在另外一台电脑(arm)上无法播放,代码没有什么报错提示。而直接点击音频文件,调用播放器是可以正常播放的。因此判断可能是Qt层面缺了什么音频相关的支持。运行,程序播放音频成功。原创 2022-10-11 23:51:04 · 3318 阅读 · 1 评论 -
Qt: 播放音频文件
QSound::play在某些情况下不好用。尝试探索新的方法,使用QMediaPlay。Qt播放音频文件,遇到点问题。原创 2022-10-09 23:09:35 · 258 阅读 · 0 评论 -
Qt: 获取程序当前运行目录
近期发现了新的方法。Qt程序,读取当前目录下的某个文件。原创 2022-10-09 22:16:50 · 2101 阅读 · 0 评论 -
Qt: Linux环境下创建与使用共享库(Shared Library)
Qt开发,有个需求是将软件中一部分代码独立出来,做成库文件在项目中引用。本项目只运行于Linux环境,因此只选Linux。QtCreator中右击项目 > 添加库。库文件:浏览,选择.so文件。二、在项目中引用共享库。原创 2022-10-06 11:45:26 · 2684 阅读 · 0 评论 -
Qt: Linux环境下获取电脑主板序列号
其中12345是本机root用户的密码。如果实际环境中不需要sudo权限,则不需要密码。原创 2022-10-05 17:23:03 · 2132 阅读 · 0 评论 -
Qt: 生成MD5的hash
实测与工具生成的hash一致。原创 2022-10-04 18:35:32 · 411 阅读 · 0 评论 -
qmake:未找到命令
Qt已经安装,如果打开终端之后直接输入qmake也是能识别的,为什么进入某个目录后就不能识别qmake呢?时间紧,原因就不探究了,总之就是在/usr/bin目录下找不到qmake程序。也就是将Qt中的qmake程序链接到usr/bin路径下。原创 2022-10-04 13:15:29 · 6426 阅读 · 0 评论 -
银河麒麟V10:QtCreator无法输入中文,Git-Cola无法输入中文
银河麒麟V10系统,发现在QtCreator无法输入中文,在版本管理工具Git-Cola中也无法输入中文。1. 比较一下两个目录。原创 2022-10-04 10:33:25 · 2094 阅读 · 1 评论 -
Qt: Linux环境发布可执行程序,在目标机上运行
开发机Linux环境(银河麒麟V10)Qt开发,需要将写好的程序发布成可执行文件,并拷贝至目标电脑上运行。研究了一段时间,成功,方法记录如下:假设可执行程序名称是zyg。开发机。原创 2022-10-03 16:16:47 · 2502 阅读 · 0 评论 -
Qt: 无法打开可执行文件 cannot open shared object file: No such file or directory
然后逐个核对了,其他库都能在该目录下找到,他们是银河麒麟系统自带的,而QtXlsxWriter是个第三方库,因此没有自带。只提示libQt5Xlsx.so.0找不到。那么其他能找到的库应该在系统目录的。/user/lib/x86_64-linux-gnu目录下,重新打开软件,成功!原创 2022-10-03 13:59:35 · 2652 阅读 · 0 评论 -
Qt编译报错:GL/gl.h: No such file or directory
重新build,报错消失。原创 2022-10-03 11:13:47 · 1602 阅读 · 0 评论 -
QtXlsxWriter: qmake 报错:No such file or directory
可以看到,本机上的目录名称是Download, 而qt_lib_xlsx.pri中的目录名称是Downloads,多了一个s, 因为上一个电脑上的目录是Downloads, 直接复制过来的,因此这个路径就找不到了。一开始没思路,因为在上一个电脑上处理QtXlsxWriter非常顺利,文件是直接复制过来的,按理说不应该有问题。所以要么改目录名称,要么改pri文件中的路径。这里选择直接改本机当前目录名称。重新qmake,成功。原创 2022-10-03 10:38:37 · 1221 阅读 · 0 评论 -
Linux: qmake:Could not find command-not-found database 未找到命令
提示:Could not find command-not-found database. Run 'sudo apt update' to populate it.银河麒麟V10,用安装包安装完qt之后,QtCreator中自动识别了qt版本。重启,测试 qmake -v 成功,qmake可以用了。原因:qt环境变量缺失。qmake:未找到命令。原创 2022-10-02 23:24:59 · 10704 阅读 · 0 评论 -
Linux: cp: 无法通过符号链接‘xxx‘ 进行操作
cp: 无法通过符号链接'/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf' 进行操作。原来这个系统目录下的default.conf比较奇怪,是一个快捷方式而不是一个文本文件。原创 2022-10-02 22:34:11 · 2115 阅读 · 0 评论 -
Linux:可执行文件xxx.run双击没反应
然后重新双击,正常运行,安装完成。原创 2022-10-02 21:20:52 · 4415 阅读 · 3 评论 -
Linux: 为root账户设置密码
root密码设置完成。原创 2022-10-02 20:06:54 · 865 阅读 · 0 评论 -
Linux shell脚本中sudo自动添加密码
Linux应用开发,有个需求是需要在程序中运行一个脚本执行一些需要sudo执行的操作,比如复制文件到系统目录。原创 2022-09-24 23:16:08 · 3051 阅读 · 0 评论 -
Linux下解决USB串口的权限问题
Linux下连接USB转串口线,软件能识别到端口,比如/dev/ttyUSB0,但是在代码中进行open操作的时候会提示权限不足。从USB设备列表中找到USB串口线对应的记录,找到vendor id(前)和product id(后)。缺点是串口线重新插拔或电脑重启之后就失效,需要重新赋权。填入“idVendor”和“idProduct”即可。实测重新插拔或重启电脑,USB串口都可以直接正常打开。原创 2022-09-22 19:29:56 · 3064 阅读 · 0 评论 -
Qt: 播放声音
Qt项目,需要在某些时候播放声音。原创 2022-09-21 22:47:55 · 2028 阅读 · 0 评论 -
银河麒麟报错: insmod: ERROR: could not insert module pl2303.ko: Unknown symbol in module
这个pl2303在当前配置下(飞腾CPU+银河麒麟V10)的支持不是很好,经常是系统启动后没有加载成功,导致需要手动安装一遍。研究了一番,发现是usbserial模块没启动,导致pl2303驱动也无法安装。解决办法是先安装usbserial, 再安装pl2303。然后系统就能识别/dev/ttyUSB0了,问题解决。原创 2022-09-18 11:53:19 · 1188 阅读 · 0 评论 -
银河麒麟 安装PL2303GC USB转串口驱动
银河麒麟系统,外接一个设备,连接线是USB转串口线,型号是PL2303,直接接到电脑上,系统没有自动加载这个设备,理论上来说应该识别为/dev/ttyUSB0.发现已经有pl2303.ko这个文件了,那么应该是这个版本无效,需要重新安装。实际本机用了两种数据线,pl2302和cp210x,所以都贴在指令里了。4. 进入USB转串口驱动目录,移除模块然后重新安装模块。2. 找到对应的Linux kernal 版本。经测试,串口可以正常通讯了。原创 2022-09-17 17:27:21 · 6022 阅读 · 0 评论 -
Qt: QColor转RGB字符串
【代码】Qt: QColor转RGB字符串。原创 2022-09-12 16:41:22 · 2213 阅读 · 2 评论 -
Qt: Linux下生成.xlsx文件(excel表格文件)
Qt开发,项目中有个功能是要将数据导出至excel文件,也就是.xlsx或.wps格式文件。原创 2022-09-05 23:38:03 · 3365 阅读 · 0 评论 -
Qt:设置窗体(QMainWindow)在屏幕居中显示
Qt开发,为了界面的美观,需要把每个窗体都设置为在屏幕居中显示。原创 2022-09-03 22:09:36 · 4144 阅读 · 0 评论 -
Qt: signal与slot解除绑定
Qt开发,有时发现一个窗体多次打开之后,原来绑定的slot被多次执行了。可见是每次打开的时候都调用了绑定的方法。实测可以解绑,重新打开窗体之后也只会执行一次slot。不管细节如何,先研究一下怎样解绑。原创 2022-09-03 11:41:07 · 822 阅读 · 0 评论 -
Qt:获取当前处于屏幕最前的窗体(获取置顶窗体)
Qt开发中,发现有时候使用 QMessageBox::information()进行弹窗提示的时候,提示框被被遮挡在窗体后面,因为窗体被设置了置顶属性,这两者存在冲突。原因是information函数中传入了默认的formMain(启动窗体), 而后续启动的窗体都在formMain的上面,因此从formMain弹出的提示框都被盖住了。问题解决,每次提示框都能保持在屏幕最前面了。原创 2022-09-02 20:28:07 · 3733 阅读 · 1 评论 -
Qt: 窗体置顶,点击其他区域不最小化
Qt项目开发,有时候会从某个界面再打开一个界面,此时要保持新开的窗体保持在屏幕最前,也就是置顶,并且点击任何该窗体以外的区域都不受影响(不被最小化)。原创 2022-09-02 19:58:13 · 706 阅读 · 0 评论 -
Qt程序报错:Socket notifiers cannot be enabled or disabled from another thread
编写Qt中串口读写的程序,想当然的用了多线程,实际运行起来发现有警告信息:QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread然后经过若干次串口读写之后,程序就报错退出了。尝试了多种修改方式,还是如此。后来网上查询,突然发现原来串口读写也可以和界面控件事件一样使用signal和slot的,于是暂时放弃多线程,改用signal和slot, 代码大致如下:...原创 2022-08-28 19:46:01 · 2554 阅读 · 1 评论 -
qmake报错:‘/usr/lib/qt5/bin/qmake‘: No such file or directory
1. 打开/usr/lib/arrch64-linux-gnu/qt-default/qtchooser/default.conf这个文件,注意第一行,就是报错信息中提示的路径(这个电脑是飞腾D2000处理器,因此架构名称是arrch64-linux-gun)结果提示:'/usr/lib/qt5/bin/qmake': No such file or directory。网上查询一番,找到了解决办法,那就是修改环境变量。其实qt已经安装好了,并且在QtCreator中程序已经可以跑起来了。......原创 2022-08-28 11:06:08 · 3584 阅读 · 1 评论