আমি রাস্পবেরি কম্পিউট মডিউলে রাস্পবিয়ান ইনস্টলেশন এবং উবুন্টু 20 এ কিউটিক্রিয়েটরের জন্য ক্রস সংকলন সেটআপ সম্পর্কে লিখেছি।
এই ব্লগপোস্টটি একটি আপডেট - এই সময়ে - কিউটি, raspi OS Bookworm এবং Ubuntu 22.04 LTSএর নতুন সংস্করণ 6.8 ।
পূর্বশর্ত
আমি নিচের হার্ড এবং সফটওয়্যার গুলো ব্যবহার করেছিঃ
Raspberry Pi 4
raspi OS Bookworm, প্রস্তাবিত সফ্টওয়্যার ছাড়া
Ubuntu 22.04 LTS
Qt 6.8
QtCreator 14.02
নোট
আপনার যদি পর্যাপ্ত র্যাম এবং সিপিইউ কোর সহ একটি ল্যাপটপ বা ডেস্কটপ কম্পিউটার থাকে তবে আপনি ভার্চুয়াল মেশিনে ক্রস কম্পাইলেশন করতে পারেন। কিন্তু আমি অভিজ্ঞতা করেছি, যে একটি দেশীয় কম্পিউটার অনেক দ্রুত এবং কম ত্রুটি তৈরি করে।
আমার কোড উদাহরণগুলিতে ফাইল পাথ এবং আইপি ঠিকানাগুলি দেখুন এবং সেগুলি আপনার প্রয়োজনের সাথে সামঞ্জস্য করুন।
জিসিসি, এলডি এবং এলডিডি এর সংস্করণগুলি আবিষ্কার করুন। পরে ক্রস কম্পাইলার তৈরির জন্য একই সংস্করণের সোর্স কোড ডাউনলোড করতে হবে।
pi@raspberrypi:~ $ gcc --version
gcc (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pi@raspberrypi:~ $ ld --version
GNU ld (GNU Binutils for Debian) 2.40
Copyright (C) 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
pi@raspberrypi:~ $ ldd --version
ldd (Debian GLIBC 2.36-9+rpt2+deb12u8) 2.36
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
~/.bashrc এর শেষে কোডের নিচের অংশটি যুক্ত করুন এবং পরিবর্তনগুলি আপডেট করুন:
cd ~
wget https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5.tar.gz
tar -xzvf cmake-3.30.5.tar.gz
cd cmake-3.30.5
./bootstrap
make -j$(nproc)
sudo make install
# Update PATH Environment Variable
which cmake
/usr/local/bin/cmake
export PATH=/usr/local/bin/cmake:$PATH
source ~/.bashrc
cmake --version
জিসিসিকে ক্রস কম্পাইলার হিসেবে তৈরি করুন
প্রয়োজনীয় সোর্স কোড ডাউনলোড করুন। আপনার প্রয়োজন অনুসারে আপনার নিম্নলিখিত কমান্ডগুলি সংশোধন করা উচিত। আমি এই পৃষ্ঠাটি তৈরি করার সময়, সেগুলি হ'ল:
জিসিসি ১২.২.০
বিনুটিলস ২.৪০ (এলডি সংস্করণ)
গ্লিবিসি ২.৩৬ (এলডিডি সংস্করণ)
cd ~
mkdir gcc_all && cd gcc_all
wget https://ftpmirror.gnu.org/binutils/binutils-2.40.tar.bz2
wget https://ftpmirror.gnu.org/glibc/glibc-2.36.tar.bz2
wget https://ftpmirror.gnu.org/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz
git clone --depth=1 https://github.com/raspberrypi/linux
tar xf binutils-2.40.tar.bz2
tar xf glibc-2.36.tar.bz2
tar xf gcc-12.2.0.tar.gz
rm *.tar.*
cd gcc-12.2.0
contrib/download_prerequisites
কম্পাইলার ইনস্টলেশনের জন্য একটি ফোল্ডার তৈরি করুন।
cd ~/gcc_all
cd linux
KERNEL=kernel7
make ARCH=arm64 INSTALL_HDR_PATH=/opt/cross-pi-gcc/aarch64-linux-gnu headers_install
বিনুটিলস তৈরি করুন।
cd ~/gcc_all
mkdir build-binutils && cd build-binutils
../binutils-2.40/configure --prefix=/opt/cross-pi-gcc --target=aarch64-linux-gnu --with-arch=armv8 --disable-multilib
make -j 8
make install
সম্পাদনা করুন gcc-12.2.0/libsanitizer/asan/asan_linux.cpp। নিম্নলিখিত কোড টুকরা যোগ করুন।
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
জিসিসির আংশিক বিল্ড করুন।
cd ~/gcc_all
mkdir build-gcc && cd build-gcc
../gcc-12.2.0/configure --prefix=/opt/cross-pi-gcc --target=aarch64-linux-gnu --enable-languages=c,c++ --disable-multilib
make -j8 all-gcc
make install-gcc
আংশিকভাবে গ্লিবিক তৈরি করুন।
cd ~/gcc_all
mkdir build-glibc && cd build-glibc
../glibc-2.36/configure --prefix=/opt/cross-pi-gcc/aarch64-linux-gnu --build=$MACHTYPE --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-headers=/opt/cross-pi-gcc/aarch64-linux-gnu/include --disable-multilib libc_cv_forced_unwind=yes
make install-bootstrap-headers=yes install-headers
make -j8 csu/subdir_lib
install csu/crt1.o csu/crti.o csu/crtn.o /opt/cross-pi-gcc/aarch64-linux-gnu/lib
aarch64-linux-gnu-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/cross-pi-gcc/aarch64-linux-gnu/lib/libc.so
touch /opt/cross-pi-gcc/aarch64-linux-gnu/include/gnu/stubs.h
জিসিসিতে ফিরে যান।
cd ~/gcc_all/build-gcc
make -j8 all-target-libgcc
make install-target-libgcc
গ্লিবিক বিল্ডিং শেষ করুন।
cd ~/gcc_all/build-glibc
make -j8
make install
জিসিসি বিল্ডিং শেষ করুন।
cd ~/gcc_all/build-gcc
make -j8
make install
এই মুহুর্তে, আমাদের কাছে জিসিসি সহ একটি সম্পূর্ণ ক্রস কম্পাইলার টুলচেইন রয়েছে। ফোল্ডার gcc_all আর লাগবে না। আপনি এটি মুছে ফেলতে পারেন।</:code19:></:code18:></:code17:></:code16:></:code15:></:code14:></:code13:></:code12:></:code11:></:code10:></:code9:></:code8:></:code7:>
বিল্ডিং Qt6
কিউটি 6 নির্মাণের দুটি সম্ভাবনা রয়েছে। ডাউনলোড করার জন্য একটি "single" (https://download.qt.io/official_releases/qt/6.8/6.8.0/single/qt-everywhere-src-6.8.0.tar.xz) সংস্করণ রয়েছে, এতে qtbase এবং সমস্ত সাবমডিউল রয়েছে। এটি খুব ভারী জিনিস এবং এটি সংকলন করতে অনেক শক্তি এবং সময় প্রয়োজন।
আমার সুপারিশটি হ'ল, ভিত্তি হিসাবে qtbase সংকলন করুন এবং তারপরে কেবলমাত্র আপনার প্রয়োজনীয় প্রতিটি সাবমডিউলকে আলাদাভাবে সংকলন করুন।
সিসরুট এবং কিউটি 6 এর জন্য ফোল্ডার তৈরি করুন। আমি আমার ওয়ার্কস্পেস/qt-rpi-cross-compilation ডিরেক্টরিতে এই ফোল্ডারগুলি তৈরি করি।
cd ~/workspace/qt-rpi-cross-compilation/qt6/src
wget https://download.qt.io/official_releases/qt/6.8/6.8.0/submodules/qtbase-everywhere-src-6.8.0.tar.xz
tar xf qtbase-everywhere-src-6.8.0.tar.xz
~/workspace/qt-rpi-cross-compilation/qt6 এ টুলচেইন.সিমেক নামে একটি ফাইল তৈরি করুন।
আপনাকে আপনার পরিবেশে "সেট (TARGET_SYSROOT / হোম / কারখানা / ওয়ার্কস্পেস / কিউটি-আরপিআই-ক্রস-সংকলন / আরপিআই-সিসরুট)" লাইনটি সামঞ্জস্য করতে হবে।
যদি আপনি QtCreator-এ একটি প্রকল্প তৈরি করেন তবে আপনাকে "Run" কনফিগারেশন সামঞ্জস্য করতে হবে। "Environment" আপনাকে যোগ করতে হবে:
-LD_LIBRARY_PATH=:/usr/local/qt6/lib/
Qt সাবমডিউল যোগ করুন
কিউএমএল মডিউল যুক্ত করুন
সোর্স কোড ডাউনলোড করুনঃ
cd ~/workspace/qt-rpi-cross-compilation/qt6/src
wget https://download.qt.io/official_releases/qt/6.8/6.8.0/submodules/qtshadertools-everywhere-src-6.8.0.tar.xz
tar xf qtshadertools-everywhere-src-6.8.0.tar.xz
wget https://download.qt.io/official_releases/qt/6.8/6.8.0/submodules/qtdeclarative-everywhere-src-6.8.0.tar.xz
tar xf qtdeclarative-everywhere-src-6.8.0.tar.xz
আপনাকে ~/workspace/qt-rpi-cross-compilation/qt6/src/qtdeclarative-everywhere-src-6.8.0/dependencies.yaml এবং ~/workspace/qt-rpi-cross-compilation/qt6/src/qtshadertools-everywhere-src-6.8.0/dependencies.yamlএ নির্ভরতা পরীক্ষা করতে হবে।
প্রয়োজনীয় মডিউলগুলি প্রথমে তৈরি এবং ইনস্টল করা উচিত তা নিশ্চিত করুন।