Raspberry config স্ক্রীন

Raspberry Pi 4-এ Qt

Raspberry Pi 4-এ Qt

Qt প্রায়শই গ্রাফিক ইন্টারফেস তৈরি করতে ব্যবহৃত হয়। Qt-তে গ্রাফিকাল ইন্টারফেস তৈরির জন্য C++ লাইব্রেরি রয়েছে যা বিভিন্ন অপারেটিং সিস্টেমে কম্পাইল করা যেতে পারে। যেহেতু এই কম্পাইল করার জন্য প্রচুর কম্পিউটিং শক্তির প্রয়োজন হয়, তাই অপেক্ষাকৃত কম শক্তি সম্পন্ন প্রসেসরের জন্য একটি হোস্ট কম্পিউটারে ডেভেলপ এবং কম্পাইল করার কাজ চালানো এবং শুধুমাত্র তারপরেই সম্পূর্ণ অ্যাপ্লিকেশনটিকে টার্গেট কম্পিউটারে লোড করার পরামর্শ দেওয়া হয়়। Raspberry Pi 3 এবং Pi 4 মডেলের জন্য একটি Qt অ্যাপ্লিকেশন তৈরি করার প্রচুর নির্দেশাবলী অনলাইনে আছে।

দুর্ভাগ্যবশত, Raspberry Pi 4 এবং আমাদের প্রয়োজনের জন্য ত্রুটিহীনভাবে কাজ করে এমন একটিও আমি খুঁজে পাইনি।

এই নির্দেশাবলী ব্যাপকভাবে https://github.com/abhiTronix/raspberry-pi-cross-compilers/blob/master/QT_build_instructions.md -এর উপর ভিত্তি করে তৈরি এবং কিছু জায়গায় সংশোধন করা হয়েছে যাতে এটি আমার জন্য কাজ করে।

Qt-এর জন্য ভার্সন 5.15.2 ব্যবহৃত হয়, এবং আমি একটি Ubuntu 20.0.4 LTS ব্যবহার করি যা ক্রস-কম্পাইলেশনের জন্য হোস্ট কম্পিউটার হিসাবে vmware-এ ইনস্টল করা আছে।

পূর্বশর্ত

হার্ডওয়্যার

হোস্ট [পিসি/ল্যাপটপ]: যেকোনও x86/x86_64 AMD/Intel মেশিন টার্গেট [Raspberry Pi 4]: Raspberry Pi 4

### সফটওয়্যার হোস্ট: যেকোনও লিনাক্স মেশিন (Ubuntu 20.04 এলটিএস পরীক্ষিত) টার্গেট: Raspberry Pi 4 লিনাক্স 32-bit OS (রাস্পবিয়ান বুলসআই লাইট পরীক্ষিত)

দ্রষ্টব্য

ব্যাকগ্রাউন্ডে Raspberry Pi - এর জন্য ক্রস কম্পাইল টুলচেন থেকে abhiTronix ব্যবহার করা হয়েছে।

অন্যান্য

স্টোরেজ এবং সময়ের আবশ্যকতা: বিল্ড ডিরেক্টরিটি প্রায় ~10GB জায়গা নেয় এবং সম্পূর্ণ হতে প্রায় 2-5 ঘন্টা সময় নেয় (নির্ভরতা এবং হোস্ট মেশিনের স্পেসিফিকেশনের উপর ভিত্তি করে)। নেটওয়ার্কিং: আপনার টার্গেট মেশিন (Raspberry Pi) এবং হোস্ট মেশিন (যেখানে আপনি ক্রস-কম্পাইল করেন) উভয়েরই ইন্টারনেট অ্যাক্সেস থাকতে হবে এবং এই নির্দেশাবলী মেনে চলার জন্য একই নেটওয়ার্কে থাকতে হবে।

Raspberry Pi 4 প্রস্তুত করা

প্রাথমিক ইনস্টলেশনের জন্য, Pi 4-এ একটি Raspberry Pi OS Lite অপারেটিং সিস্টেম আমাদের প্রয়োজন। আমি "2022-04-04-raspios-bullseye-armhf-lite.img.xz" ব্যবহার করেছি।

এটি দিয়ে একটি SD কার্ড কীভাবে তৈরি করবেন সে সম্পর্কে ডাউনলোডের বিষয়বস্তু এবং নির্দেশাবলী এখানে পাওয়া যাবে https://www.raspberrypi.org/downloads/raspbian/.

Pi 4 চালু করার পরে, কনফিগারেশন মেনু দেখা যাবে, যেখানে আপনি বিভিন্ন সেটিংস করতে পারেন (যেমন, হোস্টের নাম, IP ঠিকানা, ব্যবহারকারী, ইত্যাদি)। আমাদের কনফিগারেশনের জন্য, আমাদের "SSH" অ্যাকটিভেট করতে হবে।

সফটওয়্যার প্যাকেজ ইনস্টল এবং আপডেট করুন

  • নিম্নলিখিত কম্যান্ড দিয়ে /etc/apt/sources.list-এ ডেভেলপমেন্ট সোর্স যোগ করুন:
sudo sed -i -e 's/\#deb-src/deb-src/g' /etc/apt/sources.list
  • তারপর নিম্নলিখিত কম্যান্ড দিয়ে সিস্টেম আপডেট করুন:
sudo apt-get update
sudo apt-get -y dist-upgrade
echo "$USER ALL=NOPASSWD:$(which rsync)" | sudo tee --append /etc/sudoers
  • এবং তারপর প্রয়োজনীয় Qt এবং ডেভেলপমেন্ট প্যাকেজ ইনস্টল করুন:
sudo apt-get install -y build-essential cmake unzip pkg-config gfortran
sudo apt-get build-dep -y qt5-qmake libqt5gui5 libqt5webengine-data libqt5webkit5 libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 gdbserver
sudo apt-get install -y libxcb-randr0-dev libxcb-xtest0-dev libxcb-shape0-dev libxcb-xkb-dev
  • অতিরিক্ত প্যাকেজ ইনস্টল করুন (আপনার চাহিদার উপর নির্ভর করে):
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt install -y libxvidcore-dev libx264-dev openjdk-8-jre-headless
# audio packages
sudo apt install -y libopenal-data libsndio7.0 libopenal1 libopenal-dev pulseaudio
# bluetooth packages
sudo apt install -y bluez-tools
sudo apt install -y libbluetooth-dev
# gstreamer (multimedia) packages
sudo apt install -y libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-pulseaudio
sudo apt install -y libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev
  • তারপর RaspberryQt -এর জন্য একটি ডিরেক্টরিও তৈরি করুন:
sudo mkdir /usr/local/qt5.15
sudo chown -R pi:pi /usr/local/qt5.15

### গুরুত্বপূর্ণ সিমলিংকগুলি সেটআপ করুন

সিমলিঙ্কার টুল ডাউনলোড করুন এবং সিমলিঙ্কগুলি অ্যাডজাস্ট করুন।

sudo wget -P ~/ https://raw.githubusercontent.com/abhiTronix/raspberry-pi-cross-compilers/master/utils/SSymlinker
sudo chmod +x ~/SSymlinker

~/SSymlinker -s /usr/include/arm-linux-gnueabihf/asm -d /usr/include
~/SSymlinker -s /usr/include/arm-linux-gnueabihf/gnu -d /usr/include
~/SSymlinker -s /usr/include/arm-linux-gnueabihf/bits -d /usr/include
~/SSymlinker -s /usr/include/arm-linux-gnueabihf/sys -d /usr/include
~/SSymlinker -s /usr/include/arm-linux-gnueabihf/openssl -d /usr/include
~/SSymlinker -s /usr/lib/arm-linux-gnueabihf/crtn.o -d /usr/lib/crtn.o
~/SSymlinker -s /usr/lib/arm-linux-gnueabihf/crt1.o -d /usr/lib/crt1.o
~/SSymlinker -s /usr/lib/arm-linux-gnueabihf/crti.o -d /usr/lib/crti.o

Ubuntu প্রস্তুত করা

সফটওয়্যার আপডেট করুন এবং অতিরিক্ত প্যাকেজ ইনস্টল করুন:

sudo apt update
sudo apt install -y build-essential cmake unzip gfortran
sudo apt install -y gcc git bison python gperf pkg-config gdb-multiarch wget
sudo apt-get -y install sshpass gcc g++ gperf flex texinfo gawk bison openssl pigz libncurses-dev autoconf automake tar figlet

### বিল্ড এনভায়রনমেন্ট প্রস্তুত করুন - ফোল্ডার তৈরি করুন:

sudo mkdir ~/rpi-qt
sudo mkdir ~/rpi-qt/build
sudo mkdir ~/rpi-qt/tools
sudo mkdir ~/rpi-qt/sysroot
sudo mkdir ~/rpi-qt/sysroot/usr
sudo mkdir ~/rpi-qt/sysroot/opt

sudo chown -R 1000:1000 ~/rpi-qt
  • ডাউনলোড করুন এবং Qt সোর্সগুলি এক্সট্রাক্ট করুন:
sudo wget -P ~/rpi-qt http://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
sudo tar xf ~/rpi-qt/qt-everywhere-src-5.15.2.tar.xz -C ~/rpi-qt/
sudo chown -R 1000:1000 ~/rpi-qt
  • প্যাচ QT সোর্সগুলি.
cp -R ~/rpi-qt/qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabi-g++ ~/rpi-qt/qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabihf-g++
sed -i -e 's/arm-linux-gnueabi-/arm-linux-gnueabihf-/g' ~/rpi-qt/qt-everywhere-src-5.15.2/qtbase/mkspecs/linux-arm-gnueabihf-g++/qmake.conf
sed -i -e 's/\"main\"\: \"vc_dispmanx_display_open(0)\;\"/\"main\"\: \[\"vc_dispmanx_display_open(0)\;\"\, \"EGL_DISPMANX_WINDOW_T \*eglWindow \= new EGL_DISPMANX_WINDOW_T\;\"\]/g' ~/rpi-qt/qt-everywhere-src-5.15.2/qtbase/src/gui/configure.json
  • কম্পাইলার ডাউনলোড এবং এক্সট্রাক্ট করুন:
sudo wget -P ~/rpi-qt/tools https://sourceforge.net/projects/raspberry-pi-cross-compilers/files/Raspberry%20Pi%20GCC%20Cross-Compiler%20Toolchains/Bullseye/GCC%2010.3.0/Raspberry%20Pi%203A%2B%2C%203B%2B%2C%204/cross-gcc-10.3.0-pi_3%2B.tar.gz
sudo tar xf ~/rpi-qt/tools/cross-gcc-*.tar.gz -C ~/rpi-qt/tools/
sudo chown -R 1000:1000 ~/rpi-qt
  • রাস্পবেরি থেকে rsync ফাইলগুলি: raspberry_ip, raspberry_user এবং raspberry_pwd ভেরিয়েবলের জন্য আপনার রাস্পবেরি থেকে আপনার ভ্যালু ব্যবহার করুন।
raspberry_ip=192.168.2.108
raspberry_user=pi
raspberry_pwd=raspberry
touch ~/.ssh/known_hosts
ssh-keyscan $raspberry_ip >> ~/.ssh/known_hosts
sshpass -p "$raspberry_pwd" rsync -avz --rsync-path="sudo rsync" --delete "$raspberry_user"@"$raspberry_ip":/lib ~/rpi-qt/sysroot
sshpass -p "$raspberry_pwd" rsync -avz --rsync-path="sudo rsync" --delete "$raspberry_user"@"$raspberry_ip":/usr/include ~/rpi-qt/sysroot/usr
sshpass -p "$raspberry_pwd" rsync -avz --rsync-path="sudo rsync" --delete "$raspberry_user"@"$raspberry_ip":/usr/lib ~/rpi-qt/sysroot/usr
  • প্রতীকী লিঙ্কগুলি ঠিক করুন:
wget -P ~/rpi-qt https://raw.githubusercontent.com/abhiTronix/rpi_rootfs/master/scripts/sysroot-relativelinks.py
sudo chmod +x ~/rpi-qt/sysroot-relativelinks.py
~/rpi-qt/sysroot-relativelinks.py ~/rpi-qt/sysroot
  • Qt বিল্ড কনফিগার করুন:
cd ~/rpi-qt/build
CROSS_COMPILER_LOCATION="$HOME"/rpi-qt/tools/cross-pi-gcc-*
../qt-everywhere-src-5.15.2/configure -release -opengl es2 -eglfs -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=$(echo $CROSS_COMPILER_LOCATION)/bin/arm-linux-gnueabihf- -sysroot ~/rpi-qt/sysroot/ -prefix /usr/local/qt5.15 -extprefix ~/rpi-qt/qt5.15 -opensource -confirm-license -skip qtscript -skip qtwayland -skip qtwebengine -nomake tests -make libs -pkg-config -no-use-gold-linker -v -recheck -L$HOME/rpi-qt/sysroot/usr/lib/arm-linux-gnueabihf -I$HOME/rpi-qt/sysroot/usr/include/arm-linux-gnueabihf
  • বিল্ড Qt:
make -j$(nproc)
make install
  • Raspberry -তে rsync Qt বাইনারি:
sshpass -p "$raspberry_pwd" rsync -avz --rsync-path="sudo rsync" ~/rpi-qt/qt5.15 "$raspberry_user"@"$raspberry_ip":/usr/local

### টার্গেট মেশিনে চূড়ান্ত ধাপ (Raspberry Pi)

  • Raspberry Pi -তে লিঙ্কার আপডেট করুন

    লিঙ্কারটি যাতে নতুন QT বাইনারি ফাইলগুলি খুঁজতে পারে সেজন্য ডিভাইসটি আপডেট করতে Raspberry Pi -তে নিম্নলিখিত কম্যান্ডটি লিখুন:

echo /usr/local/qt5.15/lib | sudo tee /etc/ld.so.conf.d/qt5.15.conf
sudo ldconfig

Qt Creator ইনস্টল করা

Qt অ্যাপ্লিকেশন ডেভেলপ করার সর্বোত্তম উপায় হল Qt Creator ব্যবহার করা। এটি ইনস্টল করতে, অনুগ্রহ করে Qt ওয়েবসাইট.থেকে ডাউনলোড করুন এবং অনলাইন ইনস্টলেশন ফাইলগুলি চালান৷

ক্রস কম্পাইলিংয়ের জন্য Qt Creator কনফিগার করুন

এই ব্লগটি পড়ুন ক্রস-কম্পাইলেশনের জন্য Ubuntu 20 Lts-এ Qt-Creator কনফিগার করা Qt Creator -এ কম্পাইল করা বাইনারি (ফোল্ডার ~/rpi-qt/qt5.15) অন্তর্ভুক্ত করার জন্য।

পরামর্শ বা ভুলভ্রান্তি

আপনার যদি কোনও রকম উন্নতির জন্য পরামর্শ থাকে বা আপনি যদি কোনও ভুল খুঁজে পান - তাহলে এই পৃষ্ঠার শেষে যোগাযোগ ফর্ম ব্যবহার করে সে বিষয়ে আমাদের জানাতে দ্বিধা করবেন না ৷

কপিরাইট লাইসেন্স

কপিরাইট © 2022 Interelectronix eK এই প্রোজেক্ট সোর্স-কোডটি GPL-3.0 লাইসেন্সের অধীনে লাইসেন্সকৃত।

আপনিও হয়ত এ বিষয়ে আগ্রহী হতে পারেন

Raspberry Compute Module 4-এ Raspberry Pi OS ইনস্টল করা

এটি Compute Module 4-এ Raspberry Pi OS Lite ইনস্টল করার গাইড। আমার চালু কম্পিউটারের জন্য আমি একটি ভার্চুয়াল মেশিনে ইনস্টল করা Ubuntu 20 ব্যবহার করি।

Ubuntu 20 LTS-এ Raspberry Compute Module 4-এর জন্য Qt 5.15 ক্রস-কম্পাইলেশন

এটি Raspberry Compute Module 4-এর জন্য Qt 5.15.2 ক্রস-কম্পাইলিং করা এবং Compute Module 4-এ ইনস্টল করার নির্দেশিকা।

এটি Raspberry Pi 4 বিষয়ে আমার ব্লগ পোস্ট Qt-এর একটি আপডেট, পার্থক্য হলো এবার আমি ব্যবহার করছি Raspberry Pi OS Lite

ক্রস-কম্পাইলেশনের জন্য Ubuntu 20 LTS-এ Qt-Creator কনফিগার করা

এটি রাস্পবেরি পাই 4 এর জন্য ক্রস-সংকলিত Qt লাইব্রেরি ব্যবহার করতে এবং রাস্পবেরির জন্য অ্যাপ্লিকেশন তৈরি করতে সক্ষম হওয়ার জন্য Qt নির্মাতাকে কনফিগার করার জন্য একটি নির্দেশিকা।

Yocto local.conf

এই নির্দেশিকাতে একটি Raspberry Pi 4 -এর Qt এবং একটি Qt ডেমো অ্যাপ্লিকেশনে ইনস্টল করার জন্য কীভাবে, Yocto প্রোজেক্ট সেটআপ করতে হয় সে বিষয়ে আমরা আপনাকে তথ্য প্রদান করি এবং এরপর এই Qt ডেমো অ্যাপ্লিকেশনটি অটোস্টার্ট করা হয়।

Raspberry Pi 4 -এর জন্য Qt ক্রস কম্পাইল স্ক্রিপ্ট

এই পৃষ্ঠায় আমরা লিনাক্স হোস্ট এবং Raspberry Pi 4 -এ স্বয়ংক্রিয়ভাবে ক্রস কম্পাইলিং সেট আপ করার জন্য স্ক্রিপ্টগুলির ডাউনলোড লিঙ্ক এবং কীভাবে সেগুলি ব্যবহার করতে হয় তার একটি বর্ণনা প্রদান করি।

TCP/IP সংযোগ সহ Qt Modbus

এই ব্লগে, আমি একটি ছোট Qt-Quick অ্যাপ্লিকেশন (qml) কে TCP/IP এর মাধ্যমে একটি Modbus সংযোগের উদাহরণ হিসাবে দেখাতে চাই।

এই Qt উদাহরণে, আমি Modbus সংযোগের জন্য উদাহরণ হিসেবে শুধুমাত্র QWidget কেই পেয়েছি, এবং এই উদ্দেশ্যে শীঘ্রই একটি Qt Quick অ্যাপ্লিকেশন তৈরির পরে, আমি উদাহরণ হিসাবে এর একটি ক্ষুদ্র সংস্করণ প্রদান করতে চাই।

Raspberry Pi 4 বুট চলাকালীন সময়ে স্বয়ংক্রিয়ভাবে Qt অ্যাপ্লিকেশনটি চালু করে

আপনি যদি Raspberry Pi 4-এর জন্য একটি Qt অ্যাপ্লিকেশন - বা অন্য কোনো অ্যাপ্লিকেশন তৈরি করে থাকেন, তাহলে আপনি প্রায়শ অ্যাপ্লিকেশনটি সম্পূর্ণ করার পরে, Raspberry পুনরায় চালু হওয়ার সাথে সাথেই অ্যাপ্লিকেশনটি কল করতে চাইবেন। এটি প্রায়শই স্টার্ট স্ক্রিপ্ট ব্যবহার করে করার চেষ্টা করা হয়, যা বিভিন্ন স্থান দিয়ে অ্যাক্সেস করা যেতে পারে।

তবে, এটিকে systemd

Qt অ্যাপ্লিকেশনে উইন্ডোজ .exe চালানো হচ্ছে

কাজটি ছিল একটি টাচ কন্ট্রোলারে নতুন ফার্মওয়্যার আপলোড করার জন্য একটি Qt কুইক অ্যাপ্লিকেশন (GUI) লেখা। আপলোড সফটওয়্যারটি নির্মাতা কর্তৃক .exe অ্যাপ্লিকেশন-এ প্রদান করা হয়েছিল যা টাচ কন্ট্রোলারে একটি .bin ফাইল লোড করে।

আমি এর জন্য "QProcess" Qt ক্লাস ব্যবহার করতে চেয়েছিলাম, যা শেল অ্যাপ্লিকেশনগুলিকে কল করতে এবং নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে। লিনাক্সে, আমি ইতিমধ্যে এটি বেশ কয়েকবার সফলভাবে ব্যবহার করেছি – কিন্তু উইন্ডোজে এটি প্রথমে কাজ করতে চায়নি।