آموزش رزبری پای رزبری پای سخت افزار گنو/لینوکس

کراس کامپایل Qt 5.6.X برای رزبری پای ۲

نوشته شده توسط حامد طاهری

کراس کامپایل کردن Qt 5.6.x برای رزبری پای

Cross-compiling

احتمالا تا به این لحظه به ذهن تان خطور کرده است که چطور میتوان از طریق کامپیوتر شخصی برای رزبری پای برنامه نویسی کرد و با یک کلیک برنامه مورد نظر را بر روی رزبری پای اجرا و اشکال زدایی کرد ، درست مثل زمانی که در محیط نرم افزار آردوینو برنامه را می نویسید ، کامپایل و روی برد اجرا می کنید ، بله درست حدس زدید به این کار کراس کامپایل گفته می شود (کامپایل کردن یک برنامه روی یک ماشین و تولید کد قابل اجرا برای یک ماشین و یا دستگاه متفاوت) و این روش برای رزبری پای هم عملی می باشد.

معرفی مختصر Qt

یکی از بزرگترین نقطه ضعف های زبان برنامه نویسی قدرتمند ++C در گذشته ، نبود کتابخانه های گرافیکی قوی برای ساخت رابط کاربری بود و این نکته باعث به وجود آمدن Qt (تلفظ کنید کیوت) شد . Qt یک فریم ورک کراس پلتفورم برای زبان ++C می باشد و دارای کتابخانه های بسیار قدرتمند در زمینه رابط کاربری ، گرافیک دو بعدی و سه بعدی ، شبکه ، ارتباط با سخت افزار ، پردازش موازی و … است ، کراس پلتفرم بودن Qt این امکان را به ما می دهد که یک بار در یک سیستم عامل کد را نوشته و در سیستم عامل های دیگر به سادگی همان کد را کامپایل کرده و برنامه را اجرا کرد ، امروز Qt اکثر سیستم عامل های محبوب را پشتیبانی می کند از جمله (iOS,Windows,Windows CE,Windows RT,Linux, FreeBSD, HP-UX, Solaris,Android,OS X,Embedded Linux…) از مزیت دیگر Qt منبع باز بودن و وجود نسخه رایگان آن است که به محبوبیت این ابزار قدرتمند بسیار کمک کرده است .

Qt در دنیای Embedded

Qt در دنیای سیستم های درونه ای پا را فراتر گذاشته و با معرفی QtQuick و زبان اسکریپتی QML بستر بسیار مناسبی برای گسترش برنامه های کاربردی با ظاهری کاربر پسند فراهم کرده است به طوری که با وجود این تکنولوژی می توان برنامه هایی با رابط کاربری بسیار مدرن برای دستگاه هایی مثل انواع گوشی های هوشمند ، خودروها ، سیستم های مونیتورینگ صنعتی و ابزارهایی با صفحات لمسی و … با کمک پردازنده‌ی گرافیکی گسترش داد ، در ویدئو زیر می توانید نمونه ای از این برنامه ها را درسخت افزار های مختلف از جمله رزبری پای ببینید.

 

شروع کار و ابزارهای مورد نیاز

در این آموزش ما قصد داریم از طریق کامپیوتر شخصی خود (هاست) که روی آن سیستم عامل ویندوز نصب است کراس کامپایل را انجام دهید ، به این صورت که ابتدا ابزار مورد نیاز برای کراس کامپایل Qt را بر روی هاست نصب و Qt را از سورس آن برای رزبری پای کراس کامپایل می کنیم و بعد از ساخته شدن فایلها ، آنها را به رزبری پای انتقال می دهیم از آن به بعد تنها نیاز است شما در محیط Qt روی هاست پروژه را ایجاد کنید و با زدن دکمه اجرا برنامه روی رزبری پای اجرا خواهد شد (از طریق شبکه انتقال انجام می شود) ، بدین منظور مراحل زیر را به ترتیب و با دقت طی کنید.

۱ – دانلود آخرین نسخه ایمیج RASPBIAN و رایت کردن آن روی SD کارت (آخرین نسخه در این زمان RASPBIAN JESSIE WITH PIXEL  ۲۰۱۶-۰۹-۲۳).

۲- دانلود cross-toolchain متناسب با ایمیج RASPBIAN و نصب آن (از ستون سمت راست raspberry-gcc-4.9.2-r4.exe ۷۳۸ MB) ، توجه کنید در هنگام نصب به هیچ وجه مسیر و تنظیمات پیشفرض را تغییر ندهید و دقیقا مانند تصویر زیر انجام دهید.

 

نصب ابزار cross-toolchain , Cross-compiling،Qt،raspberry pi،آموزش حرفه ای رزبری پای،کراس کامپایل،کیوت

 

۳ – دانلود و نصب MinGW toolchain نسخه (mingw32-gcc4.8.1.exe) ، مسیر پیشفرض و تنظیمان تغییر نکند.

 

نصب ابزار MinGW toolchain

 

۴ – دانلود و نصب Python 2.7 for Windows و بعد از نصب حتما مطمئن شوید که محل نصب به متغیر Path ویندوز اضافه شده باشد (معمولا باید به صورت دستی اضافه شود).

 

اضافه کردن مسیر نصب پایتون به Path ویندوز

۵ – دانلود پکیج سورس Qt نسخه qt-everywhere-opensource-src-5.6.1.tar.xz و انتقال فایل به مسیر C:\Qt

۶ – در این مرحله قصد داریم کتابخانه های لازم برای کراس کامپایل را بر روی رزبری پای خود نصب کنید ، برای این منظور ابتدا نیاز است که رزبری پای خود را از طریق شبکه بی سیم یا به صورت کابلی با هاست خود شبکه کنید. وسپس از مسیر  C:\SysGCC\Raspberry\TOOLS\PortableSmartty در هاست نسخه قابل حمل برنامه SmarTTY را که یک کلاینت SSH است اجرا کرده و یک کانکشن به رزبری پای خود ایجاد کنید (مطمئن شوید SSH بر روی رزبری پای فعال باشد) ، حال میتوانید از طریق این برنامه دستورات لازم را بر روی رزبری پای اجرا کنید و همچنین فایل های لازم را انتقال دهید.

به ترتیب دستورات زیر را بر روی رزبری پای اجرا کنید

sudo nano /etc/apt/sources.list

در فایل sources.list خط deb-src را از حالت کامنت خارج کنید و با زدن کلید های Ctrl+O و بعد Enter فایل را ذخیره و با Ctrl+X از برنامه nano خارج شوید.

deb-src

دستورات زیر را به ترتیب اجرا کنید ، منتظر شوید تا پکیج های مورد نیاز نصب شوند.

sudo apt-get update
sudo apt-get build-dep qt4-x11
sudo apt-get build-dep libqt5gui5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0

۷ – قبل از شروع کامپایل Qt نیاز داریم که همه کتابخانه ها ی روی رزبری پای را با پوشه sysroot روی هاست سینک کنیم تا مطمئن شویم که در هنگام کامپایل همه کتابخانه های مورد نیاز در دسترس کامپایلر خواهند بود ، برای این منظور از مسیر C:\SysGCC\Raspberry\TOOLS

اسکریپت UpdateSysroot.bat را اجرا کنید از قسمت Targeted Linux Machin اتصال SSH که قبلا ایجاد کرده اید را انتخاب و روی دکمه Synchronize کلیک کنید و منتظر شوید تا همه فایلها انتقال پیدا کنند.

 

UpdateSysroot

۸ – برنامه Msys را از مسیر زیر اجرا کنید (شبیه ساز شل لینوکس)

C:\SysGCC\MinGW32\msys\1.0\msys.bat

۹ – از طریق دستور cd /c/Qt به مسیری که در آن فایل پکیج سورس Qt را ذخیره کرده بودید وارد شوید و با دستور tar xf qt-everywhere-opensource-src-5.6.1.tar.xz پکیج را استخراج کنید .

 

استخراج سورس Qt

 

۱۰ – مطمئن شوید که مسیر های مربوط به MinGW gcc compiler و Raspberry Pi cross-compile در متغیر Path ویندوز اضافه شده اند ، برای این کار کافیست در msys دستورات زیر را وارد کنید و نتیجه را مشاهده کنید.

which gcc
which arm-linux-gnueabihf-gcc

مسیر های مربوط به MinGW gcc compiler و Raspberry Pi cross-compile

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

 

Start Configure

Finish Configure

۱۷ – بعد از اینکه مراحل کانفیگ به پایان رسید می توانید مرحله اصلی کامپایل را انجام دهید ، برای این کار فقط کافیست دستور make را وارد کنید تا کامپایل شروع شود ، توجه کنید که این مرحله چند ساعتی طول می کشد و به دلیلی که نمی دانم استفاده از حالت چند پروسسی دراین مرحله جواب نمی دهد (make -j) .

make

اگر کامپایل با موفقیت انجام شد ، شما بخش مشکل کار را به انجام رسانده اید و در صورتی که خطایی ظاهر شد میتوانید با توجه به پیغامها آن را اصلاح کنید و مجددا دستور make را اجرا کنید .

تمام شدن مرحله make

۱۸ – بعد از پایان کامپایل Qt با زدن دستون make install فایهای کامپایل شده را به مسیر کراس کامپایلر انتقال دهید و این مرحله هم چند دقیقه ای زمان می گیرد ، اگر از توان سیستم خود مطمئن هستید 😉 می توانید این مرحله را به صورت چند پروسسی اجرا کنید (make install -j)

و  زمان را سیو کنید.

make install -j

 

۱۹ – مجددا برنامه SmarTTY اجرا کنید و به رزبری پای خود متصل شوید و با دستورات زیر مسیری برای انتقال فایلهای Qt به روی رزبری پای ایجاد کنید.

cd /usr/local
sudo mkdir qt5
sudo chown pi qt5

انتقال فایلهای Qt

 

۲۰ – از طریق SmarTTY و از منوی SCP->Upload directory فایلهای کامپایل شده را از هاست به مسیری که بر روی رزبری پای ایجاد کردید انتقال دهید ،

از مسیر C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\qt5 بر روی هاست

به مسیر /usr/local/qt5 بر روی رزبری پای

SCP->Upload directory

بسته به سرعت لینک بین رزبری پای و هاست شما این مرحله هم چند دقیقه ای زمان می گیرد ، پس لطفا صبور باشید .

۲۱ – بعد از اتمام کار انتقال اکنون شما می توانید برنامه های نمونه Qt را بر روی رزبری پای اجرا کنید برای این کار در همان اتصال جاری SmarTTY به مسیر زیر بروید

/usr/local/qt5/examples/opengl/qopenglwidget

و فایل qopenglwidget (دستور qopenglwidget/.)  را اجرا کنید و میتوانید نتیجه بر روی نمایشگری که به HTMI رزبری پای یا DSI رزبری پای متصل است را ببینید .

 

qopenglwidget

توجه داشته باشید که به این روش برنامه هایی که با Qt ساخته شده و  بر روی رزبری پای اجرا می شوند مستقیما بر روی فرم بافر نمایشگر رزبری پای نمایش داده شده و شما نمی توانید بر روی VNC و یا برنامه های remote دیگر خروجی آنها را مشاهده کنید ، همچنین در این صورت برنامه ها توسط Windows Manager سیستم عامل مدیریت نمی شوند و شما دکمه های بستن یا کوچک کردن پنچره برنامه را در اختیار ندارید و برنامه به صورت تمام صفحه بر روی هر چیز دیگری که در صفحه نمایش رزبری پای در حال نمایش است ، نمایش داده می شود و برای خارج شدن از برنامه باید منو یا دکمه ای برای بستن در نظر گرفته باشید ، این خصوصیات به دلیل استفاده از کلید opengl es2 در هنگام کانفیگ سورس Qt می باشد ، در این حالت حتی نیاز نیست که محیط گرافیکی سیستم عامل اجرا شده باشد و شما می توانید برای کار برد های خاص پکیج های مربوط به محیط گرافیکی سیستم عامل را حذف کنید و برنامه را طوری تنظیم کنید که بعد از بوت شدن سیستم عامل به صورت خودکار اجرا شده در این صورت هم سرعت اجرا و هم کارایی برنامه بالاتر می رود.

تصویر زیر برنامه نمونه اجرا شده بر روی رزبری پای می باشد ، برای توقف برنامه ها می توانید از کلید های ترکیبی Ctrl+C در برنامه SmarTTY استفاده کنید .

qopenglwidget app

۲۲ – مرحله آخر ، نصب IDE فریم ورک Qt در هاست خود و همچنین اضافه کردن کیت کراس کامپایلر رزبری پای بر روی آن است . برای این کار از اینجا  آخرین نسخه Qt برای ویندوز دانلود و نصب کنید ، بعد از نصب QtCreator را اجرا کنید وارد منوی Tools – > Options شده و به تپ Devices و Build & Run رفته و تنظیمات را مانند زیر انجام دهید .

 

Devices 
  Add
     Type      : Generic Linux Device
     Name      : Rasbperry pi2
     Host name : Rasbperry Pi IP address
     Username  : Rasbperry Pi user name 
     Password  : Rasbperry Pi password
     you can test SSH connection by Test button

Build & Run-->Debuggers
  Add
     Name : Rasbperry Debugger
     path : C:\SysGCC\Raspberry\bin\arm-linux-gnueabihf-gdb-7.10.exe


Build & Run-->Compilers
  Add -> GCC
    name         : GCC
    Compiler path: C:\SysGCC\Raspberry\bin\arm-linux-gnueabihf-g++.exe


Build & Run-->Qt Versions
  add... -> open qmake.exe under C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\qt5\bin

 
Build & Run-->Kits
    Add
      Name       : Rasbperry Pi Qt 5.6.1
      Device type: Generic Linux Device
      Device     : Rasbperry pi2  (the one you just created)
      Sysroot    : C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot
      Compiler   : GCC (the one you just created)
      Debugger   : Rasbperry Debugger (the one you just created)
      Qt version : Qt 5.6.1 (qt5) (the one you just created)
      Qt mkspec  : leave empty

Devices

Kits

Qt Versions

Compilers

Debuggers

حال بعد از ایجاد پروژه و اضافه کردن Kit رزبری پای کافیست کد زیر را به فایل پروژه  اضافه کنید تا بعد از کامپایل ، فایل به رزبری پای انتقال پیدا کند و اجرا بشود

target.path = /home/pi/     <- محل انتقال فایل بر روی رزبری
INSTALLS += target

target.path

ویدئو زیر یکی دیگر از برنامه های نمونه Qt که بر روی زربری پای اجرا شده است را نمایش می دهد.

 

بعد از اتمام همه مراحل می توانید نسخه پستیبانی از دایرکتوری C:\SysGCC تهیه کنید تا در استفاده های آتی بر روی کامپیوتر خود یا حتی کامپیوتر های دیگر ، نیاز به طی کردن همه مراحل از ابتدا نباشد و در آن صورت فقط کافیست مسیر C:\SysGCC را ایجاد کرده و محتویات فایل پشتیبان را به آن انتقال دهید و مراحل ۶-۱۹-۲۰-۲۲ را بر روی کامپیوتر جدید و رزبری پای جدید اعمال کنید و باز هم راه حل ساده تر تهیه ایمیج از نسخه فعلی رزبین آماده شده برای کراس کامپایل از روی رزبری پای و تهیه پشتیبان از دایرکتوری C:\SysGCC از کامپیوتر است ، که در کامپیوتر جدید فقط نیاز به باز گردانی نسخه پشتیبان C:\SysGCC و انجام مرحله ۲۲ به تنهایی و در رزبری پای جدید رایت ایمیج تهیه شده بر روی SD کارت می باشد . و اما لازم به ذکر است که شما می توانید Qt را از طریق منابع رسمی رزبری پای بر روی خود رزبری پای به راحتی نصب کنید ولی در آن صورت باید از خود رزبری پای برای توسعه برنامه استفاده کنید ، از این روش با ایجاد تغییرات جزئی در مرحله کانفیک سورس می توانید Qt برای برد های دیگر مثل بیگل بن و … کامپایل کنید.

در صورت استقبال ، کراس کامپایل Qt برای رزبری پای از طریق هاست لینوکس را هم آماده می کنم در ضمن کل این آموزش ها در صورت تقاضا به صورت ویدئو هم قابل ارایه است .

در مقاله بعدی با هم می بینیم که چطور می توان از طریق Qt و با استفاده از کتابخانه قدرتمند WiringPi با سخت افزار رزبری پای ارتباط برقرار کرد .

 

امیدوارم مفید بوده باشد.

درباره نویسنده

حامد طاهری

علاقه زیادی به تکنولوژی دارم و دانش آموخته رشته مهندسی برق الکترونیک هستم ، تخصصم هر چیزی در زمینه های الکترونیک ، کامپیوتر ، برنامه نویسی ، وب ، شبکه و سیستم های embedded است.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۰ دیدگاه

  • سلام

    واقعا عالی بود، ممنون
    اگر لطف کنید و آموزش تصویری از مراحل را آماده کنید لطف بزرگی میکنید.

    سپاس

  • با سلام و تشکر از این مطلب ارزنده تان
    جناب آقای طاهری بنده با قسمت ۱۱ کمی مشکل دارم، لطفا راهنمایی دقیق تر بفرمایید. وقتی وارد مسیر زیر میشوم.
    C:\Qt\qt-everywhere-opensource-src-5.6.1\qtbase\mkspecs\linux-arm-gnueabi-g

    فایل qmake.conf را نمیتونم پیدا کنم. چه باید بکنم؟

    • سلام
      آدرسی که شما نوشتید در سورس Qt وجود ندارد ، شما باید به این آدرس بروید
      ++qt-everywhere-opensource-src-5.6.1\qtbase\mkspecs\linux-arm-gnueabi-g
      و اگر در این آدرس فایل qmake.conf وجود ندارد ! یا اینکه فایل سورس Qt مشکل دارد و یا به صورت صحیح اکسترکت نشده است.

  • سلام خیلی خوب بود لطفا این مباحث را بصورت ویدیویی و حتی فروشی هم که شده آماده کنید منتظریم
    باز هم متشکرم perfect

  • سلام. من روی رزبری این دستور رو که اجرا میکنم خطا میده
    sudo apt-get build-dep qt4-x11
    و هر بار هم که اجرا میکنم خطا میده یعنی یکسری از پکیجهاش رو نصب میکنه و چند تا رو خطا میده. حتی گفته بود که این رو اجرا کنم ولی نشد :
    sudo dpkg –configure -a
    ولی باز هم آخرش همون خطاها رو میده.
    یکبار دیگه روی یه میکرو sd دیگه هم رزبین رو ریختم ولی بام نشد.

  • سلام و خسته نباشید
    میخواستم بپرسم برای برنامه هایی که با ورژن ۵٫۹ نوشته شده اند باید چی کار کرد؟

    • سلام مچکرم

      برای Qt 5.9 باید چند مرحله بیشتر انجام دهید ، که خوب کار را یه مقداری مشکل می کنه ، اگر فرصت شد و خودم موفق به کراس کامپایل شدم حتما مراحل را قرار می دهم.

  • با عرض سلام و روز بخیر و تشکر فراوان برای اموزشهای کار امد
    من قصد استفاده از qt رو دارم و در مرحله۱۳ به مشکل برخوردم سیستم همان پرسش و پاسخهای ذکر شده در اموزش رو به صورت زیر انجام میده اما در مرحله ۱۴ خطایی که در زیر اومده داده میشه لطفا راهنمایی کنید چطور از این مرحله عبور کنم متشکرم
    $ ../qt-everywhere-opensource-src-5.6.1/configure -platform wi
    n32-g++ -xplatform linux-arm-gnueabi-g++ -release -opengl es2
    -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-li
    nux-gnueabihf/sysroot -prefix /usr/local/qt5
    + cd qtbase
    + /c/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/configure -top-level -platform win32-g++ -xplatform linux-arm-gnueabi-g++ -release -opengl es2 -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5
    Which edition of Qt do you want to use ?

    Type ‘c’ if you want to use the Commercial Edition.
    Type ‘o’ if you want to use the Open Source Edition.

    o

    This is the Qt Open Source Edition.

    You are licensed to use this software under the terms of
    the Lesser GNU General Public License (LGPL) versions 2.1.
    You are also licensed to use this software under the terms of
    the GNU Lesser General Public License (LGPL) versions 3.

    Type ‘3’ to view the GNU Lesser General Public License version 3.
    Type ‘L’ to view the Lesser GNU General Public License version 2.1.
    Type ‘yes’ to accept this license offer.
    Type ‘no’ to decline this license offer.

    Do you accept the terms of either license? yes

    Preparing build tree…
    Running configuration tests (phase 1)…
    Done running configuration tests.
    /c/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/configure: line 3996: [: â?”f: binary operator expected
    Running configuration tests (phase 2)…
    Failed to process makespec for platform ‘devices/linux-rasp-pi2-g++’
    Turn on verbose messaging (-v) to see the final report.

    afq@DESKTOP-TQ8GV3T /c/Qt/qt-build
    $ qtbase/bin/qmake -v
    sh: qtbase/bin/qmake: No such file or directory

    • من با اجرای مجدد دستورات از این مرحله گذشتم و در مرحله ۱۶ مجدد گیر کردم خطوط پایانی پاسخ سیستم به صورت زیر است
      NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
      Configure with ‘-qreal float’ to create a build that is binary compatible with 5.1.
      Project ERROR: CROSS_COMPILE needs to be set via -device-option CROSS_COMPILE=
      Could not read qmake configuration file c:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/mkspecs/devices/linux-rasp-pi2-g++/qmake.conf.
      و یک خطا را گوشزد می کند .و دستور make هم همانطور که مشاهده می کنید انجام نمیشود . لطفا برای رفع مشکل راهنمایی کنید ممنونم.
      Error processing project file: c:\Qt\qt-everywhere-opensource-src-5.6.1\qt.pro

      afq@DESKTOP-TQ8GV3T /c/Qt/qt-build
      $ make
      make: *** No targets specified and no makefile found. Stop.

      • سلام

        به نظر میرسد که دستور

        ../qt-everywhere-opensource-src-5.6.1/configure -platform win32-g++ -xplatform linux-arm-gnueabi-g++ -release -opengl es2
        -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5
        -device-option CROSS_COMPILE=C:/SysGCC/Raspberry/bin/arm-linux-gnueabihf- -qt-xcb

        کامل وارد نکردید .

  • با سلام و تشکر برای راهنماییهای قبلی من در مرحله ۱۶ و پس از اینکه کانفیگ انجام شد با وارد کردن دستور make با خطاهای زیر روبرو شدم .چگونه میتونم این خطاها رو رفع کنم
    from C:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h:34,
    from C:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/src/corelib/arch/qatomic_unix.cpp:34:
    c:\sysgcc\raspberry\arm-linux-gnueabihf\include\sys\wait.h:102:22: error: ‘__WAIT_STATUS’ was not declared in this scope
    extern __pid_t wait (__WAIT_STATUS __stat_loc);
    ^
    In file included from C:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/mkspecs/linux-arm-gnueabi-g++/../linux-g++/qplatformdefs.h:70:0,
    from C:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h:34,
    from C:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/src/corelib/arch/qatomic_unix.cpp:34:
    c:\sysgcc\raspberry\arm-linux-gnueabihf\include\sys\wait.h:162:23: error: ‘__WAIT_STATUS’ was not declared in this scope
    extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options,
    ^
    c:\sysgcc\raspberry\arm-linux-gnueabihf\include\sys\wait.h:162:49: error: expected primary-expression before ‘int’
    extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options,
    ^
    c:\sysgcc\raspberry\arm-linux-gnueabihf\include\sys\wait.h:163:9: error: expected primary-expression before ‘struct’
    struct rusage * __usage) __THROWNL;
    ^
    c:\sysgcc\raspberry\arm-linux-gnueabihf\include\sys\wait.h:163:32: error: expression list treated as compound expression in initializer [-fpermissive]
    struct rusage * __usage) __THROWNL;
    ^
    In file included from c:\sysgcc\raspberry\arm-linux-gnueabihf\sysroot\usr\include\features.h:364:0,
    from c:\sysgcc\raspberry\arm-linux-gnueabihf\sysroot\usr\include\stdlib.h:24,
    from C:/Qt/qt-everywhere-opensource-src-5.6.1/qtbase/src/corelib/global/qt_pch.h:49:
    c:\sysgcc\raspberry\arm-linux-gnueabihf\include\sys\wait.h:163:34: error: expected ‘,’ or ‘;’ before ‘throw’
    struct rusage * __usage) __THROWNL;
    ^
    make[3]: *** [.obj/qatomic_unix.obj] Error 1
    make[3]: Leaving directory `/c/Qt/qt-build/qtbase/src/corelib’
    make[2]: *** [sub-corelib-make_first] Error 2
    make[2]: Leaving directory `/c/Qt/qt-build/qtbase/src’
    make[1]: *** [sub-src-make_first] Error 2
    make[1]: Leaving directory `/c/Qt/qt-build/qtbase’
    make: *** [module-qtbase-make_first] Error 2

    • سلام خیلی پست خوبی بود!
      منم دقیقا مثل آرین جان بعد از Make دچار همون خطا ها شدم که نمیدونم باید چیکار کنم
      پیشاپیش از راهنمایی شما ممنونم

    • سلام،
      دوست عزیز شما احتمالا در مرحله ۱۲ تغییرات را در فایل qplatformdefs.h به درستی انجام نداده اید ، مجددا تنظیمات را انجام دهید ، کلین کنید و از نو وارد مرحله کامپایل بشید.

    • دوستانی که موفق به کامپایل نشدید، بنده فایلهای آماده و کامپایل شده را دارم که فقط کافی است از مرحله ۱۹ به بعد انجام گیرد، در صورتی که امکانش باشم فایلها را بر روی سایت قرار می دهم که دوستان بتوانند دانلود کنند، حجم فایلها ۱٫۵۷ گیگا بایت است.

  • سلام ،روز خوش
    لطفا در صورت اپلود کردن فایلها لینک اونها رو اینجا قرار بدین .با تشکر فراوان

    • با سلام
      ضمن تشکر از توجه شما، جناب آقای طاهری فایل‌ها را آماده کرده‌اند. چون حجم بالاست منتظر اقدامات امنیتی سرور هستیم. به زودی در اختیار شما کاربران قرار خواهد گرفت.

  • سلام آقا حامد
    ممنون از آموزش خوبتون
    من تو مرحله ۱۳ زمانی که دستورات زیر رو اجرا میکنم
    ../qt-everywhere-opensource-src-5.6.1/configure -platform win32-g++ -xplatform linux-arm-gnueabi-g++ -release -opengl es2
    -device linux-rasp-pi2-g++ -sysroot C:/SysGCC/Raspberry/arm-linux-gnueabihf/sysroot -prefix /usr/local/qt5
    وسوالات را مطابق آموزش پاسخ میدم ارور
    You cannot make a shadow build from a source tree containing a previous build
    Cannot proceed.
    را میده لطفا راهنمایی کنید چطور حلش کنم.

    • سلام دوست عزیز،

      شما از قبل یک کامپایل نا موفق داشتید، برای شروع مجدد کامپایل ابتدا دستور make clean را اجرا کنید و مرحله کامپایل را از نو اجرا کنید.

  • با سلام و تشکر از مطلب مفیدتون
    در مرحله ی ۲۰ من نتونستم این مسیر رو پیدا کنم
    C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\qt5
    اصلا فولدری به نام qt5 تشکیل نشده

    متشکرم اگر بنده را راهنمایی بفرمایید

  • سلام ممنون آموزش خوبتون
    بنده در مرحله ۲۰ به مشکل بر خوردم فایل qt5
    در این ادرس ندارم C:\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\qt5
    ایا میشود مرا کمک کنید؟

    یک سئوال دیگر قرار بود فایل های اماده شده را در سایت قرار بدهید این کار انجام شده است؟

  • سلام
    ممنون از اموزش خوبتون
    من چند بار این اموزش انجام دادم ولی به نتیجه نرسیدم
    ایا شما فایلها را روی برسایت قرار نمیدهید؟

  • سلام و خسته نباشید
    اول که خیلی عالی بود دمتون گرم
    مهندس منم مثل بقیه منتظرم شما فایل را آپلود کنید ما هرکار میکنیم make باز هم ارور میده

  • سلام… ببخشید من از همون ابتدا پکیج دستور زیر با خطا مواجه میشه و هرچه نیازمندیهایی رو که در انتهای خطا گفته نصب میکنم بازم خطا میده
    sudo apt-get build-dep qt4-x11
    خطا به این صورته

    Reading package lists… Done
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    builddeps:qt4-x11 : Depends: libmysqlclient-dev but it is not installable
    E: Unable to correct problems, you have held broken packages.