میں نے رسبیری کمپیوٹ ماڈیول پر رسبیئن کی تنصیب کے بارے میں لکھا اور اوبنٹو 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
نوٹ
اگر آپ کے پاس کافی ریم اور سی پی یو کور کے ساتھ لیپ ٹاپ یا ڈیسک ٹاپ کمپیوٹر ہے تو ، آپ ورچوئل مشین میں کراس کمپلیشن کرسکتے ہیں۔ لیکن میں نے تجربہ کیا، کہ ایک مقامی کمپیوٹر بہت تیز ہے اور کم غلطیاں پیدا کرتا ہے.
میرے کوڈ کی مثالوں میں فائل راستوں اور آئی پی پتوں پر ایک نظر ڈالیں اور انہیں اپنی ضروریات کے مطابق ایڈجسٹ کریں۔
Setup Raspberry Pi
https://www.raspberrypi.com/software/operating-systems سے رسپی او ایس ڈاؤن لوڈ کریں
2024-07-04-رسپیوس-بک ورم-آرم64.آئی ایم جی.ایکس زیڈ: ڈیسک ٹاپ کے ساتھ رسبیری پائی او ایس کے ساتھ 64 بٹ (تجویز کردہ سافٹ ویئر کے ساتھ نہیں)
بلینا ایچر کے ساتھ ایس ڈی کارڈ پر فلیش امیج
انسٹالیشن پر عمل کریں اور ریموٹ کنیکٹ (ایس ایس ایچ) کی ترتیب کو مت بھولیں۔
میرے معاملے میں ایس ایس ایچ -> کے ساتھ آر پی آئی سے آئی پی ایڈریس 192.168.2.167 اور اپنے اوبنٹو میزبان سے صارف پائی -> سے رابطہ کریں۔
جی سی سی ، ایل ڈی اور ایل ڈی ڈی کے ورژن دریافت کریں۔ بعد میں کراس کمپائلر بنانے کے لئے اسی ورژن کا سورس کوڈ ڈاؤن لوڈ کیا جانا چاہئے۔
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
### جی سی سی کو کراس کمپائلر کے طور پر بنائیں
ضروری سورس کوڈ ڈاؤن لوڈ کریں۔ آپ کو اپنی ضروریات کے مطابق مندرجہ ذیل احکامات میں ترمیم کرنا چاہئے. اس وقت کے لئے جب میں یہ صفحہ بناتا ہوں، وہ ہیں:
GCC 12.2.0
binutils 2.40(ld version)
glibc 2.36(ldd 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
جی سی سی -12.2.0 / لیبسینیٹیزر / اسان / 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 کے لئے فولڈر بنائیں۔ میں اس فولڈر کو اپنے ورک اسپیس / کیو ٹی-آر پی آئی-کراس کمپلیشن ڈائریکٹری میں بناتا ہوں۔
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
~/ورک اسپیس/کیو ٹی-آر پی آئی-کراس کمپلیشن/کیو ٹی 6 میں ٹول چین ڈاٹ سی ایم اے کے نام سے ایک فائل بنائیں۔
آپ کو اپنے ماحول میں لائن "سیٹ (سیٹ (TARGET_SYSROOT / ہوم / فیکٹری / ورک اسپیس / کیو ٹی-آر پی آئی-کراس کمپلیشن / آر پی آئی-سیس روٹ) کو ایڈجسٹ کرنے کی ضرورت ہے۔
اگر آپ QtCreator میں کوئی پروجیکٹ بناتے ہیں تو ، آپ کو "Run" ترتیب کو ایڈجسٹ کرنا ہوگا۔ "Environment" آپ کو شامل کرنا ہوگا:
-LD_LIBRARY_PATH=:/usr/local/qt6/lib/
</:code32:>
Add Qt Submodules
QML ماڈیول شامل کریں
ماخذ کوڈ ڈاؤن لوڈ کریں:
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پر انحصار کی جانچ پڑتال کرنی ہوگی۔
اس بات کو یقینی بنائیں کہ ضروری ماڈیول پہلے بنائے اور انسٹال کیے جائیں۔