刷网站排名怎么刷,手机网站整站模板下载工具,电商如何推广,哈尔滨网站建设推广如何打包
注意事项
可能遇到的问题 如何打包#xff1a; 1、先下载linuxdeployqt工具#xff0c;下载链接#xff1a;https://github.com/probonopd/linuxdeployqt/releases 选择最后release的版本#xff0c;然后执行命令#xff1a;
sudo chmod 777 linuxdepl…如何打包
注意事项
可能遇到的问题 如何打包 1、先下载linuxdeployqt工具下载链接https://github.com/probonopd/linuxdeployqt/releases 选择最后release的版本然后执行命令
sudo chmod 777 linuxdeployqt-countinuous-x86_64.AppImage2、将文件copy到执行目录下然后再通过查看版本号来确认是否成功。以后在终端可以随时使用。
sudo cp linuxdeployqt-countinuous-x86_64.AppImage /usr/local/bin/linuxdeployqt 查看版本信息如下
admit:~$ linuxdeployqt -version
linuxdeployqt (commit 2b38449), build 62 built on 2023-12-27 21:00:01 UTC3、查看qtchooser是否已安装如果没安装的话通过下面命令安装 sudo apt install qtchooser 4、检查qmake环境变量。运行命令查看qmake是否配置正确
autoauto-PN41:~$ qmake -v
QMake version 3.1
Using Qt version 5.14.0 in /opt/qt5.14/5.14.0/gcc_64/lib如果报错找不到或者不能正确输出版本号信息则编辑 ~/.bashrc文件在文件末尾添加如下信息注意根据自己电脑的实际信息替换相关路径
#add qt env
export PATH/opt/qt5.14/5.14.0/gcc_64/bin:$PATH
export LIB_PATH/opt/qt5.14/5.14.0/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH/opt/qt5.14/5.14.0/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH/opt/qt5.14/5.14.0/gcc_64/qml:$QML2_PATH然后执行命令使其生效这种更改只会影响到当前用户 source ~/.bashrc 5、对可执行文件进行打包。首先mkdir 一个release文件夹然后将可执行文件放进去再执行命令 linuxdeployqt YourApp -appimage 静待一会命令执行完成后发现文件夹中多了很多文件
elease/test$ ls -l
lrwxrwxrwx 1 auto auto 12 3月 6 14:57 AppRun - LogParseTool
-rw-rw-r-- 1 auto auto 123 3月 6 14:57 default.desktop
-rw-rw-r-- 1 auto auto 0 3月 6 14:57 default.png
drwxrwxr-x 7 auto auto 4096 3月 6 14:57 doc
drwxrwxr-x 2 auto auto 4096 3月 6 14:57 lib
-rwxrwxr-x 1 auto auto 54408 3月 6 14:57 LogParseTool
drwxrwxr-x 7 auto auto 4096 3月 6 14:57 plugins
-rw-rw-r-- 1 auto auto 145 3月 6 14:57 qt.conf
drwxrwxr-x 2 auto auto 4096 3月 6 14:57 translations其中很多文件都可以删掉: 1) AppRun相当于快捷启动可以删除 2) default.desktop这个一般放在/usr/share/applications中我们用不到也可以删除 3) default.png程序图标删除 4) doc说明手册删除 5) lib这个存放了依赖库里面很多文件也是用不到根据实际情况瘦身 6) plugins放了插件删除用不到的 7) qt.conf配置文件很有用 8)translations翻译文件删除
特别说明 因为linuxdeployqt将在内部使用ldd命令来确定从何处将库复制到包中。ldd命令本身只能查找隐式加载的so故若程序中代码使用显式加载的so它是找不到的这时需要开发者自己去保证显式加载so的路径可被搜索。 举个例子若存在程序A显式加载B.soB.so隐式加载C.so则对程序A使用linuxdeployqt拷贝依赖时程序A的间接依赖文件C.so将不会被拷贝。当程序跑起来加载B.so时就会报找不到C.so的错误。这一点尤其需要注意。此时我们需要再对B.so使用一次linuxdeployqt拷贝依赖。这样程序A加载B.soB.so加载C.so就都可以找到了。 我们测试下程序是否可以正常运行 1首先启动一个新的终端执行export命令看有哪些环境变量涉及到qt
autoauto-PN41:~$ exportdeclare -x COLORTERMtruecolor
declare -x DBUS_SESSION_BUS_ADDRESSunix:path/run/user/1000/bus
declare -x DESKTOP_SESSIONubuntu
declare -x DISPLAY:0
declare -x GDMSESSIONubuntu
declare -x GJS_DEBUG_OUTPUTstderr
declare -x GJS_DEBUG_TOPICSJS ERROR;JS LOG
declare -x GNOME_DESKTOP_SESSION_IDthis-is-deprecated
declare -x GNOME_SHELL_SESSION_MODEubuntu
declare -x GNOME_TERMINAL_SCREEN/org/gnome/Terminal/screen/45b91e20_a362_407f_aa7e_4864aa4f4d21
declare -x GNOME_TERMINAL_SERVICE:1.2881
declare -x GPG_AGENT_INFO/run/user/1000/gnupg/S.gpg-agent:0:1
declare -x GTK_MODULESgail:atk-bridge
declare -x IM_CONFIG_PHASE1
declare -x LC_TIMEzh_CN.UTF-8
declare -x LESSCLOSE/usr/bin/lesspipe %s %s
declare -x LESSOPEN| /usr/bin/lesspipe %s
declare -x LIB_PATH/opt/qt5.14/5.14.0/gcc_64/lib:
declare -x LOGNAMEauto
declare -x MANAGERPID949
declare -x declare -x PATH/opt/qt5.14/5.14.0/gcc_64/bin:/home/auto/Anaconda3/bin:/home/auto/anaconda/bin:/home/auto/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
declare -x PLUGIN_PATH/opt/qt5.14/5.14.0/gcc_64/plugins:
declare -x PWD/home/auto
declare -x QML2_PATH/opt/qt5.14/5.14.0/gcc_64/qml:
declare -x QT_ACCESSIBILITY1
declare -x QT_IM_MODULEibus
declare -x SESSION_MANAGERlocal/auto-PN41:/tmp/.ICE-unix/1198,unix/auto-PN41:/tmp/.ICE-unix/1198
declare -x SHELL/bin/bash
declare -x SHLVL1
declare -x SSH_AGENT_PID1158
declare -x SSH_AUTH_SOCK/run/user/1000/keyring/ssh
declare -x TERMxterm-256color
declare -x USERauto
declare -x USERNAMEauto
declare -x VTE_VERSION6003
declare -x WINDOWPATH2
declare -x XAUTHORITY/run/user/1000/gdm/Xauthority
declare -x XDG_CONFIG_DIRS/etc/xdg/xdg-ubuntu:/etc/xdg
declare -x XDG_CURRENT_DESKTOPubuntu:GNOME发现有LIB_PATH\QML2_Path等涉及到qt路径的设置那么先去掉这些设置不要担心下面这些设置只会对当前终端生效
export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
export LIB_PATH
export PLUGIN_PATH
export QML2_PATH然后终端运行下./LogParseTool发现ok 注意事项 1、明明已经在当前目录下放好了库但是程序仍报错找不到库。 比如当前路径下有这些文件
ls -ldrwxrwxr-x 2 auto auto 4096 3月 6 10:42 lib
-rwxrwxr-x 1 auto auto 54408 3月 6 13:50 LogParseTool
drwxrwxr-x 5 auto auto 4096 3月 6 10:28 plugins
-rw-rw-r-- 1 auto auto 126 3月 6 10:41 qt.conf
-rw-rw-r-- 1 auto auto 81 3月 6 13:55 setting.ini对程序执行ldd命令后发现使用的库指向了别处地方此时修改qt.conf增加 Libraries./ 然后再执行ldd命令发现引用的库指向了当前文件夹中的Lib文件夹程序也可以正常启动了。此外qt.conf中支持哪些关键字的配置呢
前面是Key后面是采用默认的value{ Prefix, . },{ Documentation, doc }, // should be ${Data}/doc{ Headers, include },{ Libraries, lib },
#ifdef Q_OS_WIN{ LibraryExecutables, bin },
#else{ LibraryExecutables, libexec }, // should be ${ArchData}/libexec
#endif{ Binaries, bin },{ Plugins, plugins }, // should be ${ArchData}/plugins{ Imports, imports }, // should be ${ArchData}/imports{ Qml2Imports, qml }, // should be ${ArchData}/qml{ ArchData, . },{ Data, . },{ Translations, translations }, // should be ${Data}/translations{ Examples, examples },{ Tests, tests },
#ifdef QT_BUILD_QMAKE{ Sysroot, },{ HostBinaries, bin },{ HostLibraries, lib },{ HostData, . },{ TargetSpec, },{ HostSpec, },{ HostPrefix, },
#endif可能遇到的问题
1、可执行文件只能通过终端启动双击运行时报错 糟糕运行这个软件时出现问题。无法定位程序
这种情况下先又击鼠标查看程序属性查看程序类型是否是x-sharedlib。如果是那么返回程序进入到.pro配置中增加下面信息然后重新编译即可
QMAKE_LFLAGS -no-pie 如果出现简单的程序可以这样解决但是复杂的程序解决不了说明是环境问题因为双击在图形界面环境是文件管理器使用./是在命令行界面也就是shell脚本shell启动时会执行一些脚本改变环境变量复杂工程如果依赖三方库直接双击可执行是打不开的。那么可以考虑按照下面步骤来 修改全局环境变量把可执行程序当前路径加到如下配置文件依赖库一般和可执行程序在同级目录: 命令sudo vim /etc/ld.so.conf 将第三方库放到和可执行文件一个目录中打开 /etc/profile文件并在文件末尾添加
#add qt env
export PATH/opt/qt5.14/5.14.0/gcc_64/bin:$PATH
export LIB_PATH/opt/qt5.14/5.14.0/gcc_64/lib:$LIB_PATH
export PLUGIN_PATH/opt/qt5.14/5.14.0/gcc_64/plugins:$PLUGIN_PATH
export QML2_PATH/opt/qt5.14/5.14.0/gcc_64/qml:$QML2_PATH保存成功后执行sudo ldconfig 如果上面方法还是不行呢还有一个方法就是通过shell的方式进行
编辑一个shell脚本例如是startApp.sh放在可执行文件目录内容如下
#!/bin/bash
#workdir
workdir$(cd $(dirname $0); pwd)
cd $workdir
./AssistantMainInterface
此时可以在终端./startApp.sh运行程序了但双击还是打不开。
2、设置shell脚本双击可打开 打开文件管理器-编辑-首选项-行为勾选“打开可执行文本文件时运行它们” 右键startApp.sh选择权限选项卡勾选允许作为程序执行文件此时双击“startApp.sh”可直接执行程序
3、创建桌面快捷方式 为了看上去更像一个程序创建一个带图标的桌面快捷方式 在桌面创建文件/root//Desktop/zhushou.desktop编辑vim zhushou.desktop
[Desktop Entry]
EncodingUTF-8
NameZhuShou
Commenttool
#Exec/root/IPDSys/bin/config/shell/shell_410/rzt_tool_start.sh
Exec/root/桌面/app1/startApp.sh
Icon/root/桌面/app1/app.png
Terminalfalse
StartupNotifytrue
TypeApplication
Name[zh_CN]ZhuShou