Score:1

การเพิ่มไลบรารีลงในคอมพิวเตอร์ Linux เครื่องใหม่สำหรับแอปพลิเคชันใด ๆ ที่เขียนด้วย Qt 5.15

ธง ar

ภาพหน้าจอของใบสมัครของฉัน
ฉันเขียนใบสมัคร (ผู้สร้างตัวเรียกใช้งานเช่น Linux Mint's) ใน Qt 5.15.2 รุ่น. ฉันเสร็จสิ้นการพัฒนาและทุกอย่างก็โอเค
จากนั้นฉันต้องการตรวจสอบว่าทำงานกับคอมพิวเตอร์เครื่องใดก็ได้โดยไม่ต้องติดตั้ง Qt

สำหรับสิ่งนี้ ฉันได้ตรวจสอบ การพึ่งพา ของไฟล์แอปพลิเคชันบนคอมพิวเตอร์ของฉัน (อูบุนตู 20.04 LTS) กับ แอลดีดี คำสั่งเช่นด้านล่าง

ldd LauncherCreator

ผลลัพธ์:

    ลินุกซ์ 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)

#!/bin/bash

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

# ติดตั้ง libGL
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 1: ติดตั้ง libGL'
เสียงสะท้อน
sudo apt ติดตั้ง libgl1-mesa-dev -y

# สร้างโฟลเดอร์แอปพลิเคชัน
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 2: สร้างโฟลเดอร์แอปพลิเคชัน'
เสียงสะท้อน
ซีดี /เลือก/
sudo rm -r LauncherCreator
sudo mkdir LauncherCreator
cd LauncherCreator
sudo mkdir lib

# ไปที่โฟลเดอร์ชั่วคราว
cd ~/Desktop/temp_LauncherCreator

# เปลี่ยนโหมดเป็นปฏิบัติการ
chmod +x ~/Desktop/temp_LauncherCreator/BUILD/LauncherCreator
chmod +x ~/Desktop/temp_LauncherCreator/uninstall_LauncherCreator.sh

# คัดลอกไฟล์ไปยังโฟลเดอร์แอปพลิเคชัน
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 3: คัดลอกโฟลเดอร์แอปพลิเคชันไฟล์'
เสียงสะท้อน
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/

#สร้างลิงค์
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 4: สร้างลิงค์สำหรับ lib'
เสียงสะท้อน
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

# คัดลอกตัวเรียกใช้งานไปที่ /usr/share/applications/
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 5: ตัวเรียกใช้การคัดลอก'
เสียงสะท้อน
chmod +x ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop
sudo cp ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop /usr/share/applications/

# ลบโฟลเดอร์ชั่วคราว
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 6: ลบโฟลเดอร์ชั่วคราว'
เสียงสะท้อน
sudo rm -r ~/Desktop/temp_LauncherCreator

#อัพเดทแอพพลิเคชั่น
เสียงสะท้อน -----------------------------
echo 'ขั้นตอนที่ 7: อัปเดตแอปพลิเคชัน'
เสียงสะท้อน
sudo apt ติดตั้งอัปเดต -y

####
เสียงสะท้อน
ก้อง 'ตกลง'
เสียงสะท้อน
เสียงสะท้อน '----------------------------'
echo 'บุญญามินทร์ ทามาร์'
echo 'linkedin.com/in/bunyamintamar'
echo 'ธันวาคม 2021'
เสียงสะท้อน '----------------------------'
เสียงสะท้อน
นอน5
/opt/LauncherCreator/LauncherCreator
ทางออก

นี่เป็นของฉัน มือโปร ไฟล์:

QT += แกนหลัก
มากกว่า(QT_MAJOR_VERSION, 4): QT += วิดเจ็ต
กำหนดค่า += c++11
แหล่งที่มา += $$files("*.cpp", เท็จ)
ส่วนหัว += $$files("*.h", เท็จ)
แบบฟอร์ม += $$files("*.ui", เท็จ)
ทรัพยากร += $$files("*.qrc", เท็จ)

แอปพลิเคชั่นนี้ทำงานได้อย่างสมบูรณ์แบบในคอมพิวเตอร์ของฉันด้วย Qt 5.15 แต่ที่คอมพิวเตอร์เครื่องอื่น (อูบุนตู 20.04 LTS)มันใช้งานไม่ได้

ฉันจะแก้ปัญหานี้ได้อย่างไร?

คุณยังสามารถดูไฟล์นี้ได้ บัญชี GitHub ของฉัน. หากฉันแก้ปัญหานี้ได้ จะแชร์แอปพลิเคชันนี้ในบล็อกของฉัน
(ต่างกันแค่ชื่อแอพเท่านั้น)

guiverc avatar
cn flag
คุณไม่ได้ระบุ OS & รายละเอียดการเผยแพร่... Qt 5.15 มีให้สำหรับบางรุ่นตามค่าเริ่มต้น แต่รุ่นอื่นใช้รุ่นอื่น
guiverc avatar
cn flag
สิ่งนี้ตอบคำถามของคุณหรือไม่ [เหตุใดที่เก็บ Ubuntu จึงไม่มีซอฟต์แวร์เวอร์ชันล่าสุด](https://askubuntu.com/questions/151283/why-dont-the-ubuntu-repositories-have-the-latest-versions-of-software )
N0rbert avatar
zw flag
การพัฒนาแอปพลิเคชันสำหรับการกระจายจำนวนมากโดยใช้ Qt แบบกระจายไบนารีเป็นความคิดที่ไม่ดี การสร้าง symlink แบบสุ่มก็เป็นความคิดที่ไม่ดีเช่นกัน คุณต้องเลือกแพลตฟอร์มเป้าหมายและใช้เวอร์ชัน Qtตัวอย่างเช่น 20.04 LTS มี [5.12](https://packages.ubuntu.com/source/focal/qtbase-opensource-src) หรือต่ำกว่าเพื่อรองรับ 18.04 LTS แอปพลิเคชันของคุณดูดี แต่จะทำงานได้ตามปกติกับเวอร์ชัน Qt ที่เก่ากว่า โปรดอย่าสร้างปัญหาให้กับผู้ใช้แอปพลิเคชันที่ยอดเยี่ยมของคุณ ขั้นตอนต่อไปในการทำอย่างถูกต้องคือสร้าง PPA เพื่อรวบรวม deb-packages สำหรับ Ubuntu ที่รองรับในปัจจุบัน
Bunyamin avatar
ar flag
ขอบคุณสำหรับข้อเสนอแนะของคุณ ฉันจะรวบรวมแอปของฉันด้วย **5.12** และตรวจสอบว่าทำงานได้อย่างถูกต้องหรือไม่ ถ้าไม่เป็นไรฉันจะแบ่งปันเพื่อการใช้งานทั่วไป
Score:2
ธง zw

การพัฒนาแอปพลิเคชันสำหรับการกระจายจำนวนมากโดยใช้ Qt แบบกระจายไบนารีเป็นความคิดที่ไม่ดี การสร้าง symlink แบบสุ่มก็เป็นความคิดที่ไม่ดีเช่นกัน คุณต้องเลือกแพลตฟอร์มเป้าหมายและใช้เวอร์ชัน Qt ตัวอย่างเช่น 20.04 LTS มี 5.12. หรือต่ำกว่าเพื่อรองรับ 18.04 LTS แอปพลิเคชันของคุณดูดี แต่จะทำงานได้ตามปกติกับเวอร์ชัน Qt ที่เก่ากว่า โปรดอย่าสร้างปัญหาให้กับผู้ใช้แอปพลิเคชันที่ยอดเยี่ยมของคุณ ขั้นตอนต่อไปในการทำเช่นนี้อย่างถูกต้องคือการ สร้าง PPA เพื่อรวบรวม deb-packages สำหรับ Ubuntu ที่รองรับในปัจจุบัน

นอกจากนี้โปรดอย่าเข้าใจฉันผิด แต่เรามีอยู่แล้ว ผู้ใหญ่สองคน แอปพลิเคชันสำหรับวัตถุประสงค์ดังกล่าว - ดู:

  • mate-desktop-item-แก้ไข จาก คู่แผง บรรจุุภัณฑ์:

    mate-desktop-item-แก้ไข

  • exo-desktop-item-แก้ไข จาก exo-utils บรรจุุภัณฑ์:

    exo-desktop-item-แก้ไข

เป็นสิ่งทดแทนที่ดีสำหรับที่มีอยู่ก่อนหน้านี้ gnome-desktop-item-แก้ไข ใบสมัครจาก แผงคำพังเพย แพ็คเกจ (ดู คำถาม & คำตอบนี้ เพื่อดูรายละเอียดเกี่ยวกับประวัติของมัน)

Bunyamin avatar
ar flag
ฉันเห็นด้วยกับคุณ. แต่จริงๆแล้วฉันต้องการเรียนรู้ที่จะเพิ่มห้องสมุดที่จำเป็น แอพนี้เป็นเพียงแอพธรรมดา
Bunyamin avatar
ar flag
น่าเสียดายที่แอพนี้ไม่พร้อมใช้งานสำหรับ Ubuntu 20.04 ตามการวิจัยของฉัน
N0rbert avatar
zw flag
ทั้ง desktop-item-edit สำหรับ MATE และ Xfce (Exo) พร้อมใช้งานสำหรับ 20.04 LTS - ดู [ลิงก์นี้](https://packages.ubuntu.com/search?suite=focal&arch=amd64&searchon=contents&keywords=desktop-item-edit ). gnome-desktop-item-edit [มีให้บริการ](https://packages.ubuntu.com/search?suite=bionic&arch=amd64&searchon=contents&keywords=desktop-item-edit) สำหรับ 18.04 LTS เท่านั้น เป็นเรื่องจริง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา