首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为用QT5.15编写的任何应用程序向新的Linux计算机添加库

为用QT5.15编写的任何应用程序向新的Linux计算机添加库
EN

Ask Ubuntu用户
提问于 2021-12-18 21:29:11
回答 1查看 305关注 0票数 1

我的申请截图我用Qt 5.15.2版本编写了一个应用程序(像Linux那样的启动程序创建者)。我完成了开发,一切都很好。然后,我想检查它是否在没有安装Qt的任何计算机上工作。

为此,我使用下面的命令在计算机ldd (Ubuntu20.04LTS)上检查了应用程序文件的依赖项

代码语言:javascript
复制
ldd LauncherCreator

结果:

代码语言:javascript
复制
    linux-vdso.so.1 (0x00007ffe2c7a9000)
    libQt5Widgets.so.5 => /opt/Qt/5.15.2/gcc_64/lib/libQt5Widgets.so.5 (0x00007f2d1eae1000)
    libQt5Gui.so.5 => /opt/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5 (0x00007f2d1e1b0000)
    libQt5Core.so.5 => /opt/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5 (0x00007f2d1d9ba000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2d1d7c6000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2d1d7ab000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2d1d5b9000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2d1d594000)
    libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f2d1d50c000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2d1d3bd000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2d1d3a1000)
    libicui18n.so.56 => /opt/Qt/5.15.2/gcc_64/lib/libicui18n.so.56 (0x00007f2d1cf08000)
    libicuuc.so.56 => /opt/Qt/5.15.2/gcc_64/lib/libicuuc.so.56 (0x00007f2d1cb50000)
    libicudata.so.56 => /opt/Qt/5.15.2/gcc_64/lib/libicudata.so.56 (0x00007f2d1b16b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2d1b165000)
    libgthread-2.0.so.0 => /lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f2d1b160000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f2d1b037000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2d1f35c000)
    libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f2d1af7f000)
    libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f2d1af49000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2d1aed6000)
    libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f2d1ad99000)
    libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f2d1ad6f000)
    libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f2d1ad69000)
    libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f2d1ad5f000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f2d1ad45000)

为了解决这个问题,我只复制上面出现的与Qt相关的库,并粘贴到一个名为lib的新文件夹中。我为其他计算机编写了一个安装程序脚本,以便下载必要的库并正确安装。(也许真正的问题就在这里。注意步骤4)

代码语言:javascript
复制
#!/bin/bash

sudo echo -----------------------------

# install libGL
echo -----------------------------
echo 'STEP 1: install libGL'
echo
sudo apt install libgl1-mesa-dev -y

# create application folder
echo -----------------------------
echo 'STEP 2: create application folder'
echo
cd /opt/
sudo rm -r LauncherCreator
sudo mkdir LauncherCreator
cd LauncherCreator
sudo mkdir lib

# go into the temporary folder
cd ~/Desktop/temp_LauncherCreator

# change mode to executable
chmod +x ~/Desktop/temp_LauncherCreator/BUILD/LauncherCreator
chmod +x ~/Desktop/temp_LauncherCreator/uninstall_LauncherCreator.sh

# copy files to application folder
echo -----------------------------
echo 'STEP 3: copy files application folder'
echo
sudo cp ~/Desktop/temp_LauncherCreator/BUILD/LauncherCreator         /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/LauncherCreator/rocket.ico    /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/currentVersion                /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/uninstall_LauncherCreator.sh  /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/lib/*                         /opt/LauncherCreator/lib/

# create links
echo -----------------------------
echo 'STEP 4: create links for lib'
echo
cd /opt/LauncherCreator/lib
sudo ln -s libicudata.so.56.1      libicudata.so.56
sudo ln -s libicudata.so.56        libicudata.so
sudo ln -s libicui18n.so.56.1      libicui18n.so.56
sudo ln -s libicui18n.so.56        libicui18n.so
sudo ln -s libicuuc.so.56.1        libicuuc.so.56
sudo ln -s libicuuc.so.56          libicuuc.so
sudo ln -s libQt5Core.so.5.15.2    libQt5Core.so.5.15
sudo ln -s libQt5Core.so.5.15      libQt5Core.so.5
sudo ln -s libQt5Core.so.5         libQt5Core.so
sudo ln -s libQt5Gui.so.5.15.2     libQt5Gui.so.5.15
sudo ln -s libQt5Gui.so.5.15       libQt5Gui.so.5
sudo ln -s libQt5Gui.so.5          libQt5Gui.so
sudo ln -s libQt5Widgets.so.5.15.2 libQt5Widgets.so.5.15
sudo ln -s libQt5Widgets.so.5.15   libQt5Widgets.so.5
sudo ln -s libQt5Widgets.so.5      libQt5Widgets.so

# copy launcher to /usr/share/applications/
echo -----------------------------
echo 'STEP 5: copy launcher'
echo
chmod +x ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop
sudo  cp ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop /usr/share/applications/

# remove temporary folder
echo -----------------------------
echo 'STEP 6: remove temporary folder'
echo
sudo rm -r ~/Desktop/temp_LauncherCreator

# update applications
echo -----------------------------
echo 'STEP 7: update applications'
echo
sudo apt install update -y

####
echo
echo 'OK'
echo
echo '-----------------------------'
echo 'Bunyamin TAMAR'
echo 'linkedin.com/in/bunyamintamar'
echo 'December 2021'
echo '-----------------------------'
echo
sleep 5
/opt/LauncherCreator/LauncherCreator
exit

这是我的pro文件:

代码语言:javascript
复制
QT        += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG    += c++11
SOURCES   += $files("*.cpp", false)
HEADERS   += $files("*.h",   false)
FORMS     += $files("*.ui",  false)
RESOURCES += $files("*.qrc", false)

这个应用程序在我的计算机上与QT5.15一起工作得很好。但是,在另一台计算机(Ubuntu20.04LTS)上,它不能工作。

How我能解决这个问题吗?

You也可以在未定义上看到这个文件。如果我解决了这个问题,将在我的博客上共享这个应用程序。(只有应用程序的名称不同)

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2021-12-18 21:57:32

使用二进制分布式Qt开发大规模分发应用程序是个坏主意。随机符号的创建也是个坏主意。您必须选择目标平台并使用其Qt版本。例如,20.04 LTS有5.12。甚至更低的支持18.04 LTS。您的应用程序看起来很棒,但是它将正常工作在较早的Qt版本中。请不要为您伟大的应用程序的用户造成问题。下一步,正确地这样做是创建PPA来编译目前支持的Ubuntu版本的deb-包。

另外,请不要误解我的意思,但是我们已经有两个成熟应用程序用于上述目的-请参见:

  • mate-desktop-item-edit来自mate-panel包:
  • exo-desktop-item-edit来自exo-utils包:

它们很好地替代了来自gnome-panel包的以前可用的D18应用程序(有关其历史的详细信息,请参见这个问答 )。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1382684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档