[V3S NBV2] Cross Compiler Source V3S Qt

Máy tính nhúng V3s đang có giá cực sốc trên Website: epcb.vn. Hỗ trợ source code hệ điều hành bởi EPCB, nhanh tay mua tại đây!


Trên Raspberry Pi

1. Mở file như lệnh sau và bỏ command dòng "deb-src htp://raspbian.raspberry.org/raspbian/ buster main contrib non-free rpi”

# sudo nano /etc/apt/sources.list

2. Update hệ thống và cài các gói package cần thiết để build Qt:

# 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-xinarama0

3. Tạo thư mục library prefix để chứa các thư viện sau khi cross compile.

# sudo mkdir /urs/local/qt5pi

# sudo chown pi:pi /usr/local/qt5pi

Trên máy Host Ubuntu 18

1. Cài các gói package cần thiết để build Qt cho máy host

# sudo apt-get install git cmake vim autoconf -y

# sudo apt-get install python-minimal -y

# sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm -y

# sudo install libcurl-ocaml-dev libmosquitto-dev libmosquittopp-dev libusb-1.0-0-dev libssl-ocaml-dev -y

# sudo apt-get install bison flex swig -y

# sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 libx11-dev

2. Tải toolchain cho RaspberryPi dùng để compile Qt

# mkdir ~/raspi

# cd ~/raspi

# git clone https://github.com/raspberrypi/tools

3. Tạo thư mục sysroot để gỉa lập môi trường root filesystem của Raspberry trên máy host. Dùng rsync để sync các thư mục hệ thống của Raspberry xuống thư mục sysroot. Với “raspberrypi.local” là IP của Raspberry Pi.

# mkdir sysroot sysroot/usr sysroot.opt

# rsync-avz pi@raspberrypi.local:/lib sysroot

# rsync-avz pi@raspberrypi.local:/usr/include sysroot/usr

# rsync-avz pi@raspberrypi.local:/usr/lib sysroot/usr

# rsync-avz pi@raspberrypi.local:/opt/vc sysroot/opt

4. Tải script để fix các đường dẫn trên sysroot giả lập

# wget –no-check-certificate https://raw.githubusercontent.com/Kukkimonsuta/rpi-buildqt/master/scripts/utils/sysroot-relativelinks.py

# chmod +x sysroot-relativelinks.py

# ./sysroot-relativelinks.py sysroot

5. Tải source Qt everywhere để build. SAu khi tải xong, nhấp phải tại file vừa tải và chọn "extract here"

# wget -no-check-certificate http://mirrors.geekpie.club/qtproject/archive/qt/5.12/5.12.6/qt-everywhere-src-5.12.6.tar.xz

# cd qt-everywhere-src-5.12.6

Lưu ý: Nếu bạn build source code cho Raspberry Pi 3 thì làm động tác như sau:

Copy thư mục đính kèm để config device trong thư mục data tên là "linux-rasp-pi3-epcb-g++" vào đường dẫn "qtbase/mkspecs/devices"

# ./configure -device-option CROS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- --enable-shared -prefix /usr/local/qt5pi -opengl es2 -sysroot ~/raspi/sysroot -opensource -confirm-license -make libs -v -no-gbm -skip qtserialbus -skip qtscxml -skip qtscript -skip qtcharts -skip qt3d -skip qtdatavis3d -skip qtcanvas3d -skip qtgamepad -skip qtvirtualkeyboard -skip qtwayland -skip qtwebengine -skip qtwebchannel -skip qtwebglplugin -recheck-all -no-qml-debug -nomake examples -nomake tests -no-pulseaudio -no-alsa -extprefix ~/raspi/qt5pi -hostprefix ~/raspi/qt5 -device linux-rasp-pi3-epcb-g++

# make -j8

# sudo make install

6. Copy thư viện đã được build lên trên Raspberry Pi

# cd..

# rsync -avz qt5pi pi@raspberrypi.local:/usr/local

7. Update đường dẫn thư viện đã build và file ldconfig

# echo /usr/local/qt5pi/lib | sudo tee /etc/ld.so.conf.d/qt5pi.conf

# sudo ldconfig

8. Tạo các link ảo cho thư viện opengl

# sudo mv /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0_backup

# sudo mv /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0_backup

# sudo ln -s /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0

# sudo ln -s /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0

# sudo ln -s /opt/vc/lib/libbrcmEGL.so /opt/vc/lib/libEGL.so

# sudo ln -s /opt/vc/lib/libEGL.so /opt/vc/lib/libEGL.so.1

# sudo ln -s /opt/vc/lib/libGLESv2.so /opt/vc/lib/libGLESv2.so.2

9. Export các biến môi trường để deloy Qt APP

# cd

# vim .bashrc

/* Thêm các lệnh sau đây vào file .bashrc */

@*********************************@

export QT_QPA_PLATFORM=eglfs

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/qt5pi/plugins/platforms

export LD_LIBRARY_PATH=/usr/local/qt5pi/lib

export Qt_QPA_EGLFS_INTEGRATION=eglfs_x11; export QT_QPA_PLATFORM=eglfs; DISPLAY=:0.0

@*********************************@

# source .bashrc

/* 😊 Cùng chạy APP thôi nào! 😊 */

# ./app -platform eglfs