(ที่มา https://forum.qt.io/topic/109885/cross-compile-qt-5-12-5-for-raspberry-pi-4/7)
ที่ raspberry pi
หลังจากทำ raspbian ลง sd-card แล้ว ให้ทำ headless ssh ตาม step 3, ตามเวปนี้ https://hackernoon.com/raspberry-pi-headless-install-462ccabd75d01.sudo nano /etc/default/keyboard ให้เปลี่ยนจาก "gb" ไปเป็น "us" เพื่อทำให้ keyboard เป็น us
2.sudo reboot
3.sudo raspi-conig
3.1 change password
3.2 change Time-Zone ให้เป็น Asia, Bangkok
3.3 Interface option
3.3.1 Enable I2C
3.3.2 Enable SSH
4.sudo nano /boot/config.txt
4.1 uncomment hdmi_force_hotplug=1
4.2 uncomment hdmi_group=1, hdmi_mode=16
5.sudo apt-get update
6.sudo apt-get upgrade
7.sudo apt-get install wiringpi
8.cd /temp
9.wget https://project-downloads.drogon.net/wiringpi-latest.deb
10.sudo dpkg -i wiringpi-latest.deb
11.check ด้วยคำสั่ง gpio -v และ gpio readall
12.sudo nano /etc/apt/sources.list
uncomment the deb-src line in the /etc/apt/sources.list
- 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
- sudo mkdir /usr/local/qt5pi
- sudo chown pi:pi /usr/local/qt5pi
ที่ computer linux
sudo apt-get install python- mkdir ~/raspi
- cd ~/raspi
- git clone https://github.com/raspberrypi/tools
4บรรทัดต่อไปนี้ ให้เปลี่ยน raspberrypi_ip เป็น ip ของ raspberry pi ที่เราใช้อยู่
- rsync -avz pi@raspberrypi_ip:/lib sysroot
- rsync -avz pi@raspberrypi_ip:/usr/include sysroot/usr
- rsync -avz pi@raspberrypi_ip:/usr/lib sysroot/usr
- rsync -avz pi@raspberrypi_ip:/opt/vc sysroot/opt
- wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
- chmod +x sysroot-relativelinks.py
- ./sysroot-relativelinks.py sysroot
wget http://download.qt.io/official_releases/qt/5.12/5.12.7/single/qt-everywhere-src-5.12.7.tar.xzที่มา https://www.tal.org/tutorials/building-qt-512-raspberry-pi
เพื่อเป็นการเช็คว่าไฟล์ที่ download มา สมบูรณ์หรือไม่ ให้ทำนี้
md5sum qt-everywhere-src-5.12.7.tar.xz
ควรจะมีผลลลัพธ์ตามนี้
ce2c5661c028b9de6183245982d7c120 qt-everywhere-src-5.12.7.tar.xz
- tar xvf qt-everywhere-src-5.12.7.tar.xz
- cd qt-everywhere-src-5.12.7
sudo apt-get install build-essential
=========== ตรงนี้ไม่แน่ใจว่าต้องทำหรือไม่ ======================
git clone https://github.com/oniongarlic/qt-raspberrypi-configuration.git
cd qt-raspberrypi-configuration && make install DESTDIR=../qt-everywhere-src-5.12.7ตรงนี้ให้แก้เป็น
cd qt-raspberrypi-configuration && make install DESTDIR=~/raspi/qt-everywhere-src-5.12.7
================================================
./configure -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip qtwayland -skip qtlocation -skip qtscript -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v -no-gbm
จริงๆแล้วควรจะต้องแก้ไขเป็น -device linux-rasp-pi-vc4-g++ เนื่องจากบอร์ดของเราเป็น rpi4 แต่ทำแล้วใช้ไม่ได้ จึงต้องเป็น -device linux-rasp-pi-g++ ตามเดิม
ตัวอย่างที่แก้ไขแล้ว ที่ใช้ไม่ได้
./configure -release -opengl es2 -device linux-rasp-pi-vc4-g++ -device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/raspi/sysroot -opensource -confirm-license -skip qtwayland -skip qtlocation -skip qtscript -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -no-use-gold-linker -v -no-gbm
หลังจาก ./config ...... เสร็จแล้ว ให้เช็คว่า config สมบูรณ์ไหม โดยให้เปิดไฟล์ config.summary
ต้องเป็นตามนี้
- Build options:
- ......
- QPA backends:
- ......
- EGLFS .................................. yes
- EGLFS details:
- ......
- EGLFS Raspberry Pi ................... yes
แล้วก็ make install
rsync -avz qt5pi pi@raspberrypi_ip:/usr/local
ให้เปลี่ยน raspberrypi_ip เป็น ip ของ raspberry pi
แล้วก็ลง qt ที่เครื่อง linux ของเรา ตามนี้ https://www.qt.io/download
ให้เลือก download for open source users โดยคลิกที่ go open source
ลงไปด้านล่างของเวป click download the qt online installer แล้วก็คลิก download
จะมี pop-up ให้ download qt-unified-linux-x64-3.2.2-online.run ขึ้นมา ก็ให้กด save file
- chmod +x qt-unified-linux-x64-3.2.2-online.run
- ./qt-unified-linux-x64-3.2.2-online.run
จะมีอยู่ช่วงนึงจะให้เลือกว่าเราจะลงเวอร์ชั่นไหน ในที่นี้เลือก 5.12.7 เหมือนกับกับที่ทำตั้งค่า cross compile
แล้วก็รอ download กันยาวๆไป
เมื่อลงโปรแกรมเสร็จแล้ว ก็ให้เปิดโปรแกรมขึ้นมา
ไปที่ tools, options, device section(มองหาที่ด้านซ้าย), device tab(มองหาที่กลางบน), แล้วกด add ที่ด้านขวามือ
แล้วเลือกเป็น general linux device แล้ว click start wizard
name : Raspberry Pi
ip : 192.168.1.xx (ตาม ip ของ raspberry pi ของเรา)
user name : pi
จะมีให้สร้าง key deployment ให้คลิกที่ create new key pair
ขั้นตอนนี้ต้องเปิด Raspberry Pi ไว้ด้วย เพราะจะมีการทดสอบระหว่าง qt ของเครื่องคอมฯ กับ RPi
คลิก Generate and save key pair
ไปที่ kit section, compiler tab, แล้วกด Add
GCC, C
ในช่อง compiler path ให้ใส่ ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/bin/gcc
กด Add แล้วเลือก GCC, C++
ในช่อง compiler path ให้ใส่ ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/bin/c++
ไปที่ Debugger tab แล้วกด Add
ในช่อง path ให้ใส่ ~/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb
ไปที่ Qt version tab แล้วกด Add ให้ตั้ง qmake path ไปที่ ~/raspi/qt5/bin/qmake
สุดท้าย ไปที่ Kits tab, กด Add แล้วตั้งชื่อ และเลือก icon ตามใจ แล้ว configure ค่าต่างๆ ตามนี้
- Device type: Generic Linux Device
- Device: Raspberry Pi (defaut for Generic Linux)
- Sysroot: ~/raspi/sysroot
- Compiler C: GCC (Raspberry Pi)
- Compiler C++: GCC (Raspberry Pi)
- Debugger: GDB (Raspberry Pi)
- Qt version: Qt 5.12.7 (Raspberry Pi)
หลังจากนี้ ให้ลองสร้าง project ใหม่ จะมีตอนที่ให้เลือก Kits ก็เลือก Raspberry Pi ที่เราสร้างไว้
แล้วก็ลองเขียนโปรแกรมได้เลย
Enjoy!