programing

QTCreator에서 사용하기 위해 설치된 mariadb10과 RPI3(Stretch)를 교차 컴파일하려면 어떻게 해야 합니까?

projobs 2022. 12. 10. 14:03
반응형

QTCreator에서 사용하기 위해 설치된 mariadb10과 RPI3(Stretch)를 교차 컴파일하려면 어떻게 해야 합니까?

Stretch를 실행하고 있는 RPi3와 mariadb10에서만 사용하는 QTCreator(5.9) C++ 프로그램을 크로스 컴파일하고 있습니다.컴파일된 MYSQL을 입수하는 데 문제가 있습니다.호스트 시스템에서 Ubuntu 18을 실행하고 있습니다.

크로스 컴파일 라이브러리를 작성하기 위해 다음 행을 실행했습니다.MYSQL을 사용할 수 없는 것 이외에는 모두 문제가 없는 것 같습니다.

cd ~/raspi3;
git clone https://github.com/raspberrypi/tools;
git clone git://code.qt.io/qt/qtbase.git -b 5.9;
cp ~/Desktop/sysroot-relativelinks.py ~/raspi3; #Copy previously downloaded file. No longer available as of 2/5/2019 at recommended https://raw.githubusercontent.com/riscv/riscv-poky/priv-1.10/scripts/sysroot-relativelinks.py
chmod +x sysroot-relativelinks.py;
mkdir sysroot/usr sysroot/opt;
rsync -avz pi@$ip:/lib sysroot;
rsync -avz pi@$ip:/usr/include sysroot/usr;
rsync -avz pi@$ip:/usr/lib sysroot/usr;
rsync -avz pi@$ip:/opt/vc sysroot/opt;
python ./sysroot-relativelinks.py sysroot;
cd qtbase;
./configure -release -opengl es2 -device linux-rasp-pi3-g++ -I /usr/arm-linux-gnueabihf -device-option CROSS_COMPILE=~/raspi3/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sql-mysql MYSQL_INCDIR=~/raspi3/sysroot/usr/include/mysql MYSQL_LIBDIR=~/raspi3/sysroot/usr/lib/arm-linux-gnueabihf MYSQL_LIBS="-lmariadbclient" -sysroot ~/raspi3/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5pi -extprefix ~/raspi3/qt5pi -hostprefix ~/raspi3/qt5 -v -nomake examples -nomake tests -nomake tools -no-use-gold-linker -recheck-all;

위의 ./configure는 다음 보고서를 실행하고 생성합니다(제외).

Qt Sql:
  DB2 (IBM) .............................. no
  InterBase .............................. no
  MySql .................................. no
  OCI (Oracle) ........................... no
  ODBC ................................... yes
  PostgreSQL ............................. yes
  SQLite2 ................................ no
  SQLite ................................. yes
    Using system provided SQLite ......... no
  TDS (Sybase) ........................... yes

Note: Also available for Linux: linux-clang linux-icc

Note: PKG_CONFIG_LIBDIR automatically set to /home/max/raspi3/sysroot/usr/lib/pkgconfig:/home/max/raspi3/sysroot/usr/share/pkgconfig:/home/max/raspi3/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig

Note: PKG_CONFIG_SYSROOT_DIR automatically set to /home/max/raspi3/sysroot

Note: Dropped compiler flags '-pthread' when detecting library 'glib'.

ERROR: Feature 'sql-mysql' was enabled, but the pre-condition 'libs.mysql' failed.

주의: MYSQL_INCDIR, MYSQL_LIBDIR 및 MYSQL_LIBS도 삭제해 봤지만 결과는 변경되지 않았습니다.

QTCreator에서 작성한 프로그램을 컴파일하여 실행하면 사용 가능한QMYSQL 드라이버가 없고 데이터베이스 접속이 없는 것을 알 수 있습니다.

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 QTDS QTDS7
FAILED TO CONNECT TO DB

나는 ALOT를 찾아다녔고 내가 발견한 모든 합리적인 것들을 시도했다.문제의 원인일 가능성이 있는 컴파일의 문제를 설명해 주실 수 있습니까?

좋아요, 성공했고 해결 방법이 있어요.이 튜토리얼에 따라 교차 컴파일 환경을 https://mechatronicsblog.com/cross-compile-and-deploy-qt-5-12-for-raspberry-pi/로 설정했습니다.

그러나 MySQL을 염두에 두고 제외된 방법에 따라 몇 가지 변경을 가했습니다.먼저 Rasberry Pi 측에서 MariaDB용 추가 패키지를 설치했는데, 이는 Debian Buster의 MySQL을 대체하기 때문입니다.라즈베리 파이 3 B+에서도 Respbian 라이트 버전(Buster)을 사용했습니다.

Linux 호스트는 VM 내의 Linux Mint 19.3입니다.시나몬은 맛있으니까(^^,

Rasberry Pi SSH에 접속하여 설치합니다.

sudo apt install mariadb-client mariadb-common mysql-common libmariadb-dev-compat libmariadbclient-dev libqt5sql5-mysql libqt5sql5 libqt5sql5-sqlite

부차적으로.필요한지는 모르겠지만, Lasberry Pi에는 libqt5core와 다른 Qt 관련 libs도 다수 설치했습니다.네트워킹, 위젯, 코어 등.

libmariadb-dev-compative 패키지는 mariadb와 mysql 간의 호환성에 필요한 모든 링크를 만듭니다.다음으로 qt configure 스크립트를 호출할 때 mysql(mariadb) 라이브러리의 경로를 지정해야 합니다.

Rasberry Pi SSH입니다.【PC】
「MariaDB libs」 「rsync」 「rsync」 「mariaDB libs」.토토튜

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

Qt-Everywhere(Qt 5.12.5를 사용)를 설정하려면 make 설정에 MySQL을 추가해야 합니다.

다음은 Qt 5.12.5를 MySQL(MariaDB) 드라이버로 소스에서 컴파일하기 위한 정확한 설정 스크립트입니다.

./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 -sql-mysql MYSQL_INCDIR=~/raspi/sysroot/usr/include/mysql MYSQL_LIBDIR=~/raspi/sysroot/usr/lib/arm-linux-gnueabihf

설정 순서 후에, MySQL 가 yes 로 설정되어 있는 것을 확인합니다.예를 들어 다음과 같습니다.

 Qt Sql Drivers:
 DB2 (IBM) .............................. no
 InterBase .............................. no
 MySql .................................. yes
 OCI (Oracle) ........................... no
 ODBC ................................... no
 PostgreSQL ............................. yes
 SQLite2 ................................ no
 SQLite ................................. yes

Qt Creator에서 Rasberry를 디바이스로 추가할 때까지 나열된 튜토리얼을 계속 진행합니다.

24시간 동안 컴파일한 후 어젯밤 늦게 기침을 한 것

Qt 5.14.1에서는 Qt creator에서 디바이스(Raspberry Pi)를 설정할 때 SSH 키를 사용해야 합니다.패스워드 옵션이 없어졌습니다.Qt에게 SSH 키를 생성하여 SCP 등을 통해 Rasberry pi에 복사하도록 지시합니다."qtc_id.pub" 파일은 /home/pi/.ssh로 이동하고 .ssh 폴더에 "authorized_keys"라는 파일을 만듭니다.

touch ~/.ssh/authorized_keys

다음 분.

cat "qtc_id.pub" >> authorized_keys

이것은 이름 qtc_id를 복사하기 위한 것입니다.파일을 일반 텍스트로 pub. 파일을 저장하고 종료합니다.그리고나서

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

이제 위의 튜토리얼에서 설명한 것처럼 Qt creator에서 설정할 때 Rasberry Pi에 연결할 수 있습니다.

또: 최신 Qt 5.14.1 소스로 구축하려고 했습니다.그것은 단지 내가 시도하거나 방해할 시간이나 에너지가 없는 여러 가지 문제들로 인해 실패했다.난 그냥 프로젝트를 프로그래밍하고 싶을 뿐이야.

@Max등에서 도움이 되었으면 합니다.나에겐 성공적이었어.이것은 1.5배의 투쟁이었다.소스로부터의 QT 구축과 Rasberry Pi 크로스 컴파일 환경 셋업은 제가 오랫동안 경험해 본 것 중 가장 짜증나는 일입니다.대부분의 경우 문서가 오래되었거나 매우 모호합니다.많은 일이 잘못될 수 있지만 지금으로서는 이 방법밖에 없다.Qt를 컴파일한 후에도 MySQL을 컴파일하는 방법을 모르겠습니다.MySQL 플러그인 드라이브를 컴파일하기만 하면 됩니다.전혀 모릅니다.

남아프리카공화국 인사말

언급URL : https://stackoverflow.com/questions/54595241/how-to-cross-compile-a-rpi3-stretch-with-mariadb10-installed-for-use-with-qtcr

반응형