Qt 5.15 cross compile for Raspberry Compute Module 4 on Ubuntu 20 LTS

ভূমিকা

এটি রাস্পবেরি পাই 4 এর জন্য কিউটি 5.15.2 ক্রস-সংকলন এবং কম্পিউট মডিউল 4 এ ইনস্টল করার জন্য একটি গাইড। এটি রাস্পবেরি পাই 4 এর উপর আমার ব্লগ পোস্ট কিউটির একটি আপডেট, পার্থক্য সহ যে এবার আমি রাস্পবেরি পাই ওএস লাইট (ডাউনলোড করুন: https://www.raspberrypi.org/software/operating-systems/), কিউটি সংস্করণ 5.15.2 এবং উবুন্টু 20 এলটিএস একটি ভার্চুয়াল মেশিনে ক্রস-কম্পাইল কম্পিউটার হিসাবে ব্যবহার করছি।

সূত্র

আমার পুরানো ব্লগ পোস্ট (উপরে দেখুন) ছাড়াও, আমি নিম্নলিখিত উত্সগুলিও ব্যবহার করেছি:

রাস্পবেরি পাই ওএস লাইট

রাস্পবেরি পাই ওএস লাইট একটি রাস্পবেরি পাই 4 বা রাস্পবেরি কম্পিউট মডিউল 4 এ ইনস্টল করুন যেমনটি আমার ব্লগ পোস্টে বর্ণিত হয়েছে রাস্পবেরি কম্পিউট মডিউল 4 এ রাস্পবেরি পাই ওএস ইনস্টল করা

Qt 5.15.2 on Ubuntu 20 LTS

রাস্পবেরি পাই ওএস কম্পিউট মডিউলে ইনস্টল হওয়ার পরে এবং রাস্পবেরি বুটগুলি ইএমএমসি মেমরি থেকে ফিরে আসার পরে, রাস্পবেরি এবং উবুন্টু মেশিনে প্রয়োজনীয় সফ্টওয়্যার ইনস্টল করার সময় এসেছে।

রাস্পবেরি কম্পিউট মডিউল 4

নীচে প্রদর্শিত পদক্ষেপগুলি একটি "সাধারণ" রাস্পবেরি পাই 4 এও কাজ করা উচিত।

পাই 4 চালু করার পরে, কনফিগারেশন মেনুটি খুলুন।

sudo raspi-config
আমাদের কনফিগারেশনের জন্য আমাদের "এসএসএইচ" এবং "জিএল (নকল কেএমএস)" প্রয়োজন। নিচের দুটি স্ক্রিনশট দেখুন।
SSH Konfiguration

FKMS Konfiguration

- তারপর /etc/apt/sources.list-এ ডেভেলপমেন্ট সোর্স যোগ করুন। এটি করতে, নিম্নলিখিত লাইনটি যুক্ত করুন:
deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
- তারপরে নিম্নলিখিত কমান্ডগুলি দিয়ে সিস্টেমটি আপডেট করুন:
sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
sudo rpi-update
sudo reboot
- এবং তারপর প্রয়োজনীয় Qt এবং উন্নয়ন প্যাকেজ ইনস্টল করুন:
sudo apt-get build-dep qt5-qmake
sudo apt-get build-dep libqt5gui5
sudo apt-get build-dep libqt5webengine-data
sudo apt-get build-dep libqt5webkit5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver
- তারপরে রাস্পবেরিকিউটির জন্য একটি ডিরেক্টরি তৈরি করুন:
sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15

উবুন্টু মেশিন

উবুন্টু 20 এলটিএস ইনস্টল সহ একটি পিসি বা ভার্চুয়াল মেশিন প্রয়োজন।
প্রথমত, উবুন্টুকে আপ টু ডেট করুন এবং কিছু প্রয়োজনীয় লাইব্রেরি ইনস্টল করুন:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc git bison python gperf pkg-config gdb-multiarch
sudo apt install build-essential

তারপরে - যদি ইতিমধ্যে উপলভ্য না হয় - একটি এসএসএইচ-কী তৈরি করুন এবং এটি রাস্পবেরিতে ইনস্টল করুন, যাতে প্রতিটি আরসিএনসির সাথে একটি পাসওয়ার্ড প্রম্পট উপস্থিত না হয় এবং ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রবেশ করতে হবে। ইন্টারনেটে পর্যাপ্ত নির্দেশাবলী রয়েছে, তাই আমি এখানে বিস্তারিত বিবরণ রেখে দেব।

রাস্পবেরি লাইব্রেরির জন্য ডিরেক্টরি কাঠামো তৈরি করুন

প্রয়োজনীয় ফাইলগুলির জন্য, আমি ডকুমেন্টস / কিউটি-ক্রসকম্পাইল-রাস্পবেরিপি / রাস্পবেরিপিআই 4 এর অধীনে নিম্নলিখিত ডিরেক্টরি কাঠামো তৈরি করি:

sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/build
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/tools
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot/usr
sudo mkdir ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot/opt
sudo chown -R 1000:1000 ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4
cd ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4

কিউটি রিসোর্স ডাউনলোড করুন

আমরা কিউটি রিসোর্সগুলি ডাউনলোড করি এবং তাদের রাস্পবেরিপি 4 ডিরেক্টরিতে আনপ্যাক করি:

sudo wget http://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
sudo tar xfv qt-everywhere-src-5.15.2.tar.xz

এখন আমাদের এমকেএসপিইসি ফাইলটি কিছুটা সংশোধন করতে হবে যাতে আমরা এটি আমাদের কম্পাইলারের সাথে ব্যবহার করতে পারি। এটি করতে, নিম্নলিখিত কমান্ডগুলি চালান:

cp -R qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabi-g++ qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabihf-g++
sed -i -e 's/arm-linux-gnueabi-/arm-linux-gnueabihf-/g' qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabihf-g++/qmake.conf

ক্রস-কম্পাইলার ডাউনলোড করুন

ক্রস-কম্পাইলার হিসাবে আমি একটি লিনারো সংস্করণ 7.4.1 ব্যবহার করি। এটি করতে, সরঞ্জাম ডিরেক্টরিতে পরিবর্তন করুন এবং কম্পাইলারটি ডাউনলোড এবং আনপ্যাক করুন:

cd  tools
sudo wget https://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz
tar xfv gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz

রাস্পবেরি লাইব্রেরির রুপি

এখন আমাদের রাস্পবেরি পাই থেকে মূল গ্রন্থাগারগুলি প্রয়োজন, যা আমরা আরসিএনসি দিয়ে উবুন্টু ডিরেক্টরিতে অনুলিপি করি:

cd ..
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/lib sysroot/
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/usr/include sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/usr/lib sysroot/usr/
rsync -avz --rsync-path="sudo rsync" --delete [email protected]:/opt/vc sysroot/opt/

এখন আমাদের প্রতীকী লিঙ্কগুলি পরিষ্কার করতে হবে যা আরসিএনসি দ্বারা অনুলিপি করা হয়েছিল যাতে তারা সঠিক মূল ফাইলগুলি নির্দেশ করে। ডাউনলোডের জন্য একটি ছোট পাইথন স্ক্রিপ্ট রয়েছে:

wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py

তারপরে স্ক্রিপ্টটি এক্সিকিউটেবল করুন এবং এটিকে কল করুন:

sudo chmod +x sysroot-relativelinks.py
./sysroot-relativelinks.py sysroot

Qt সংকলন

এখন আমরা বিল্ড কনফিগার করতে পারি এবং তারপরে এটি সংকলন করতে পারি।

cd build
../qt-everywhere-src-5.15.2/configure -release -opengl es2  -eglfs -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/tools/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/sysroot -prefix /usr/local/qt5.15 -extprefix ~/Documents/Qt-CrossCompile-RaspberryPi/raspberrypi4/qt5.15 -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine -nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck

কয়েক মিনিট পরে, স্ক্রিপ্টটি শেষ করা উচিত এবং নিম্নলিখিত ইজিএলএফএস শর্তগুলি সেট করা উচিত বা সেট করা উচিত নয়।

QPA backends:
  DirectFB ............................... no
  EGLFS .................................. yes	[SHOULD BE YES]
  EGLFS details:
    EGLFS OpenWFD ........................ no
    EGLFS i.Mx6 .......................... no
    EGLFS i.Mx6 Wayland .................. no
    EGLFS RCAR ........................... no
    EGLFS EGLDevice ...................... yes	[SHOULD BE YES]
    EGLFS GBM ............................ yes
    EGLFS VSP2 ........................... no
    EGLFS Mali ........................... no
    EGLFS Raspberry Pi ................... no	[SHOULD BE NO]
    EGLFS X11 ............................ yes
  LinuxFB ................................ yes
  VNC .................................... yes

যদি এটি না হয় বা অন্য কোনও ত্রুটি বার্তা উপস্থিত হয় তবে অনুগ্রহ করে তদন্ত করুন এবং পরিষ্কার করুন। আপনি যদি পরিবর্তিত ভেরিয়েবলের সাথে কনফিগারেশন স্ক্রিপ্টটি আবার চালাতে চান তবে অনুগ্রহ করে বিল্ড ডিরেক্টরির সামগ্রীগুলি আগেই মুছে ফেলুন।
যদি সবকিছু ঠিক থাকে তবে মেক চালান এবং ইনস্টল কমান্ড তৈরি করুন।

make -j4
make install

রাস্পবেরিতে সংকলিত ফাইলগুলি ইনস্টল করুন

যদি সংকলনটি সফল হয় তবে সংকলিত ফাইলগুলি - তারা কিউটি 5.15 ডিরেক্টরিতে অবস্থিত - রাস্পবেরি পাইতে অনুলিপি করা যেতে পারে। আবার, আমরা rsync কমান্ড ব্যবহার করে এটি করি।

rsync -avz --rsync-path="sudo rsync" qt5.15 [email protected]:/usr/local/

কনফিগারেশন QtCreator

পরবর্তী ব্লগ পোস্টে আমি ব্যাখ্যা করব কিভাবে সংকলিত লাইব্রেরিগুলির সাথে ব্যবহারের জন্য QtCreator ব্যবহার করবেন।