Ả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)