Điểm:1

Thêm thư viện vào máy tính Linux mới cho bất kỳ ứng dụng nào được viết bằng Qt 5.15

lá cờ ar

Ảnh chụp màn hình ứng dụng của tôi
Tôi đã viết một ứng dụng (người tạo trình khởi chạy như Linux Mint's) Trong Qt 5.15.2 phiên bản. Tôi đã hoàn thành việc phát triển và mọi thứ đều ổn.
Sau đó, tôi muốn kiểm tra xem nó có hoạt động ở bất kỳ máy tính nào chưa cài đặt Qt không.

Đối với điều này, tôi đã kiểm tra phụ thuộc của tệp ứng dụng trên máy tính của tôi (Ubuntu 20.04 LTS) với ldd lệnh như dưới đây

ldd LauncherTrình tạo

kết quả:

    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)

Để giải quyết vấn đề này, tôi chỉ sao chép các thư viện xuất hiện ở trên liên quan đến Qt và dán vào một thư mục mới có tên lib.
Tôi đã viết một tập lệnh cài đặt cho các máy tính khác để tải xuống các thư viện cần thiết và cài đặt đúng cách. (Có thể vấn đề thực sự nằm ở đây. Hãy chú ý đến BƯỚC 4)

#!/bin/bash

tiếng vang sudo -----------------------------

# cài đặt libGL
tiếng vang -----------------------------
echo 'BƯỚC 1: cài đặt libGL'
tiếng vang
Sudo apt cài đặt libgl1-mesa-dev -y

# tạo thư mục ứng dụng
tiếng vang -----------------------------
echo 'BƯỚC 2: tạo thư mục ứng dụng'
tiếng vang
cd /opt/
sudo rm -r Trình tạo trình khởi chạy
Sudo mkdir LauncherCreator
Trình tạo cd Launcher
sudo mkdir lib

# đi vào thư mục tạm thời
cd ~/Desktop/temp_LauncherCreator

# thay đổi chế độ thành thực thi
chmod +x ~/Desktop/temp_LauncherCreator/BUILD/LauncherCreator
chmod +x ~/Desktop/temp_LauncherCreator/uninstall_LauncherCreator.sh

# sao chép tệp vào thư mục ứng dụng
tiếng vang -----------------------------
echo 'BƯỚC 3: sao chép thư mục ứng dụng'
tiếng vang
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/

#tạo liên kết
tiếng vang -----------------------------
echo 'BƯỚC 4: tạo liên kết cho lib'
tiếng vang
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

# sao chép trình khởi chạy vào /usr/share/applications/
tiếng vang -----------------------------
echo 'BƯỚC 5: sao chép launcher'
tiếng vang
chmod +x ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop
sudo cp ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop /usr/share/applications/

# xóa thư mục tạm thời
tiếng vang -----------------------------
echo 'BƯỚC 6: xóa thư mục tạm thời'
tiếng vang
sudo rm -r ~/Desktop/temp_LauncherCreator

#cập nhật ứng dụng
tiếng vang -----------------------------
echo 'BƯỚC 7: cập nhật ứng dụng'
tiếng vang
Sudo apt cài đặt cập nhật -y

####
tiếng vang
lặp lại 'OK'
tiếng vang
tiếng vang '----------------------------------'
tiếng vang 'Bunyamin TAMAR'
tiếng vang 'linkedin.com/in/bunyamintamar'
echo 'Tháng 12 năm 2021'
tiếng vang '----------------------------------'
tiếng vang
ngủ 5
/opt/LauncherCreator/LauncherCreator
lối ra

Đây là của tôi chuyên nghiệp tập tin:

QT += gui lõi
lớn hơn(QT_MAJOR_VERSION, 4): QT += widget
CẤU HÌNH += c++11
NGUỒN += $$files("*.cpp", false)
TIÊU ĐỀ += $$files("*.h", false)
HÌNH THỨC += $$files("*.ui", false)
TÀI NGUYÊN += $$files("*.qrc", false)

Ứng dụng này hoạt động hoàn hảo trong máy tính của tôi với Qt 5.15. Nhưng mà, tại máy tính khác (Ubuntu 20.04 LTS), nó không hoạt động.

Làm thế nào tôi có thể giải quyết vấn đề này?

Bạn cũng có thể xem các tập tin này trên tài khoản GitHub của tôi. Nếu tôi giải quyết vấn đề này, sẽ chia sẻ ứng dụng này trên blog của tôi.
(chỉ có tên ứng dụng ở đó là khác)

guiverc avatar
lá cờ cn
Bạn đã không cung cấp chi tiết về hệ điều hành và bản phát hành... Qt 5.15 có sẵn cho một số bản phát hành theo mặc định; nhưng các bản phát hành khác sử dụng các phiên bản khác
guiverc avatar
lá cờ cn
Điều này có trả lời câu hỏi của bạn không? [Tại sao kho Ubuntu không có phiên bản phần mềm mới nhất?](https://askubuntu.com/questions/151283/why-dont-the-ubuntu-repositories-have-the-latest-versions-of-software )
N0rbert avatar
lá cờ zw
Phát triển các ứng dụng để phân phối hàng loạt bằng cách sử dụng Qt phân phối nhị phân là một ý tưởng tồi. Tạo liên kết tượng trưng ngẫu nhiên cũng là một ý tưởng tồi. Bạn phải chọn nền tảng mục tiêu của mình và sử dụng phiên bản Qt của nó.Ví dụ: 20.04 LTS có [5.12](https://packages.ubuntu.com/source/focal/qtbase-opensource-src). Hoặc thậm chí thấp hơn để hỗ trợ 18.04 LTS. Ứng dụng của bạn trông tuyệt vời, nhưng nó sẽ hoạt động bình thường với phiên bản Qt cũ hơn. Vui lòng không tạo sự cố cho người dùng ứng dụng tuyệt vời của bạn. Bước tiếp theo để thực hiện điều này một cách chính xác là tạo PPA để biên dịch các gói gỡ lỗi cho các bản phát hành Ubuntu hiện được hỗ trợ.
Bunyamin avatar
lá cờ ar
Cảm ơn bạn đã gợi ý. Tôi sẽ biên dịch ứng dụng của mình với **5.12** và kiểm tra xem ứng dụng có hoạt động bình thường không. Nếu ổn mình sẽ share cho mọi người sử dụng chung.
Điểm:2
lá cờ zw

Phát triển các ứng dụng để phân phối hàng loạt bằng cách sử dụng Qt phân phối nhị phân là một ý tưởng tồi. Tạo liên kết tượng trưng ngẫu nhiên cũng là một ý tưởng tồi. Bạn phải chọn nền tảng mục tiêu của mình và sử dụng phiên bản Qt của nó. Ví dụ 20.04 LTS có 5.12. Hoặc thậm chí thấp hơn để hỗ trợ 18.04 LTS. Ứng dụng của bạn trông tuyệt vời, nhưng nó sẽ hoạt động bình thường với phiên bản Qt cũ hơn. Vui lòng không tạo sự cố cho người dùng ứng dụng tuyệt vời của bạn. Bước tiếp theo để làm điều này một cách chính xác là tạo PPA để biên dịch các gói gỡ lỗi cho các bản phát hành Ubuntu hiện được hỗ trợ.

Ngoài ra xin đừng hiểu sai ý tôi nhưng chúng tôi đã có hai trưởng thành các ứng dụng cho mục đích đã đề cập - xem:

  • mate-desktop-item-chỉnh sửa từ bảng điều khiển bạn đời bưu kiện:

    mate-desktop-item-chỉnh sửa

  • exo-desktop-item-chỉnh sửa từ exo-utils bưu kiện:

    exo-desktop-item-chỉnh sửa

Họ là sự thay thế tốt cho trước đó có sẵn gnome-desktop-item-chỉnh sửa ứng dụng từ bảng điều khiển gnome gói (xem hỏi đáp này để biết chi tiết về lịch sử của nó).

Bunyamin avatar
lá cờ ar
Tôi đồng ý với bạn. Nhưng thực ra mình muốn học thêm các thư viện cần thiết. Ứng dụng này chỉ là một ứng dụng thông thường.
Bunyamin avatar
lá cờ ar
Thật không may, ứng dụng này không có sẵn cho Ubuntu 20.04 theo nghiên cứu của tôi
N0rbert avatar
lá cờ zw
Cả desktop-item-edit cho MATE và Xfce (Exo) đều có sẵn cho 20.04 LTS - xem [liên kết này](https://packages.ubuntu.com/search?suite=focal&arch=amd64&searchon=contents&keywords=desktop-item-edit ). gnome-desktop-item-edit [có sẵn](https://packages.ubuntu.com/search?suite=bionic&arch=amd64&searchon=contents&keywords=desktop-item-edit) chỉ dành cho 18.04 LTS, đó là sự thật.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.