UBUNTU20.04 配置以QT界面程序代替系统界面启动,以及如何在tty模式下以linuxfb形式启动

QT界面代替系统界面启动

xsessions配置

将QT程序直接当成ubuntu的桌面,需要替换掉/usr/share/xsessions下的原有桌面配置文件。

将原目录的ubuntu.desktop文件后缀改名,重新创建新文件myApp.desktop文件并添加内容

cpp 复制代码
[Desktop Entry]
Name=myapplication
Comment=auto start myapplication
Exec=/bin/bash /home/a/czk200/StartRun.sh #运行脚本
#Exec=/home/a/czk200/CZK #运行程序
Iocn=
Type=Application

QT配置

注意:此方法当QT崩溃时会跳转到登录界面,但是输入密码过后会反复显示登录界面,无法进入任何桌面,那是因为QT程序已经作为了ubuntu的当前桌面,而程序崩溃之后,脚本执行完毕,故ubuntu找不到该显示的桌面了,所以会无限显示登录页面,此时也可以通过Ctrl+Alt+F1~F3进入tty命令模式启动。

桌面模式下启动

QT启动配置脚本,注意权限问题

cpp 复制代码
#!/bin/bash

cd /home/a/czk200/
echo 123456 | sudo -S pwd

export DISPLAY=:0.0

ulimit -c unlimited
export LD_LIBRARY_PATH=/usr/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
export QT_DEBUG_PLUGINS=1
#export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
#export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1

sudo chmod 777 CZK

./CZK

# 启动CZK方式

#1,图形界面模式启动
./CZK

tty模式启动

指定 linuxfb 这个选项告诉程序使用帧缓冲来渲染图形,而不是 X11 或 Wayland。linuxfb 是一个低级的显示方式,通常用于没有图形桌面的环境,或当你直接操作显示设备(比如嵌入式设备或没有 X11 的系统)时。

cpp 复制代码
#!/bin/bash

cd /home/a/czk200/
echo 123456 | sudo -S pwd

export DISPLAY=:0.0

ulimit -c unlimited
export LD_LIBRARY_PATH=/usr/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
export QT_DEBUG_PLUGINS=1
#export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
#export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1

# 启动 ./CZK
sudo chmod 777 CZK
sudo chmod 666 /dev/fb0
#gdb CZK

# 启动CZK方式

#2,tty模式启动
sudo chmod 666 /dev/fb0
./CZK --platform linuxfb:fb="/dev/fb0"

问题

1,出现qt.qpa.plugin:Could not load the Qt platform plugin "xcb"问题

XCB插件库指定路径问题

XCB库加载失败问题,有可能是由于XCB插件库指定路径问题,手动指定QT_QPA_PLATFORM_PLUGIN_PATH安装路径和QT_DEBUG_PLUGINS调试信息,根据调试信息查找问题。

cpp 复制代码
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/

export QT_DEBUG_PLUGINS=1

2,出现Cannot create window: no screens available

检查 framebuffer 设备是否存在

确保你的系统中有可用的 framebuffer 设备。可以通过以下命令查看:

cpp 复制代码
ls /dev/fb*

安装 framebuffer 相关的包

你可以尝试安装 framebuffer 所需的相关包,确保系统具备正确的图形支持:

cpp 复制代码
sudo apt-get install fbdev

设置环境变量

确保你已经为 Qt 设置了正确的平台插件路径。你可以通过以下命令设置环境变量:

cpp 复制代码
export LD_LIBRARY_PATH=/usr/lib/
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
export QT_DEBUG_PLUGINS=1

3,出现提示loaded library "/usr/lib/plugins/platforms/libqlinuxfb.so" Failed to open framebuffer /dev/fb0 (Permission denied) linuxfb: Failed to initialize screen问题

Framebuffer Permissions:

提示打开/dev/fb0设备失败由于权限问题,所以检查/dev/fb0权限

cpp 复制代码
sudo chmod 666 /dev/fb0

Input Device Permissions:

检查输入设备权限

cpp 复制代码
sudo chmod 666 /dev/input/event*
sudo chmod 666 /dev/input/mouse*

Running as Root:

检查运行程序权限问题

cpp 复制代码
sudo <your-application>
相关推荐
inferno8 小时前
Maven基础(一)
java·开发语言·maven
csbysj20208 小时前
SQLite Truncate Table: 完全删除表中的数据
开发语言
tung tung tung sahur8 小时前
领略 Rust 抽象之美:自定义迭代器实现全解析
开发语言·后端·rust
ftpeak9 小时前
《Rust MP4视频技术开发》第八章:生成MP4
开发语言·rust·音视频·mp4
好学且牛逼的马9 小时前
【SSM框架 | day25 spring IOC 与 DI 注解开发】
java·开发语言
_OP_CHEN9 小时前
C++进阶:(四)set系列容器的全面指南
开发语言·c++·stl·set·multiset·关联式容器·setoj题
不惑_9 小时前
Java 使用 FileOutputStream 写 Excel 文件不落盘?
开发语言·python
十五年专注C++开发9 小时前
Qt-VLC: 一个集成VLC的开源跨平台媒体播放库
开发语言·qt·媒体·libvlc·vlc-qt
郝学胜-神的一滴10 小时前
128天写作之旅:记录与成长的点滴
开发语言·程序人生
superman超哥10 小时前
仓颉语言中流式I/O的设计模式深度剖析
开发语言·后端·设计模式·仓颉