国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板

這篇具有很好參考價(jià)值的文章主要介紹了QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

0、背景

在上一文《QT學(xué)習(xí)筆記-QT安裝oracle oci驅(qū)動(dòng)》中介紹了在Windows環(huán)境下使用QT訪問oracle數(shù)據(jù)庫時(shí)遇到驅(qū)動(dòng)無法加載問題的解決辦法,大體思路是對(duì)QT源碼中數(shù)據(jù)庫驅(qū)動(dòng)的源碼oci進(jìn)行編譯,要想通過編譯需要依賴對(duì)應(yīng)數(shù)據(jù)庫的頭文件和庫(可以通過下載oracle instant client),編譯通過后就可以把生成的驅(qū)動(dòng)文件放入plugin/sqldrivers的目錄下)并且把oracle instant cient目錄配置到LD_LIBRARY_PATH環(huán)境變量中,或者在程序中指定oracle instnat client的oci.dll位置就可以正常訪問postgresql數(shù)據(jù)庫了。然而要想把oracle oci驅(qū)動(dòng)移植到ARM開發(fā)板就需要更復(fù)雜的一些步驟,本文介紹具體的移植過程。

1、搭建交叉編譯環(huán)境

由于ARM開發(fā)板的內(nèi)存資源和存儲(chǔ)資源以及嵌入式操作系統(tǒng)的限制,我們不大可能在ARM開發(fā)板的系統(tǒng)上安裝QT開發(fā)環(huán)境以及源碼,ARM開發(fā)板通常作為最終的運(yùn)行環(huán)境。我們用的筆記本或個(gè)人PC往往是X86處理器,因此在筆記本系統(tǒng)或個(gè)人PC中編譯的QT程序是無法直接運(yùn)行在ARM開發(fā)板上的。從開發(fā)電腦到ARM開發(fā)板是有2個(gè)關(guān)鍵的變化,1是操作系統(tǒng)從Windows變?yōu)榱薒inux,2是從X86處理器變?yōu)榱薃RM處理器。這就需要搭建一臺(tái)交叉編譯服務(wù)器(可以是一臺(tái)獨(dú)立的PC或者是虛擬機(jī)),交叉編譯服務(wù)器的操作系統(tǒng)要為Linux,示意如下:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

交叉編譯環(huán)境的搭建主要是獲得對(duì)應(yīng)的交叉編譯工具鏈,就是在X86處理器上運(yùn)行的Linux系統(tǒng)中使用交叉編譯工具鏈對(duì)X86的Windows下開發(fā)的源碼進(jìn)行交叉編譯生成基于Arm處理器的Linux系統(tǒng)能夠運(yùn)行的目標(biāo)程序。

通常我們管X86的Windows開發(fā)環(huán)境叫開發(fā)環(huán)境,X86的Linux環(huán)境叫交叉編譯環(huán)境,Arm的Linux環(huán)境叫目標(biāo)環(huán)境或運(yùn)行環(huán)境。最簡單搭建交叉編譯環(huán)境的方式就是直接使用目標(biāo)開發(fā)版操作系統(tǒng)的編譯服務(wù)器作為交叉編譯服務(wù)器。不過這個(gè)環(huán)境一般比較大,因?yàn)椴僮飨到y(tǒng)的源碼非常大。要想用一個(gè)輕量級(jí)的交叉編譯環(huán)境,還是建議自己搭建。

本文后面介紹的是直接采用的操作系統(tǒng)編譯服務(wù)器作為交叉編譯環(huán)境的。

2、交叉編譯過程

1、我們知道Qt開發(fā)的源碼,要生成可執(zhí)行程序一般要通過2個(gè)步驟:

  1. 通過qmake生成Makefile
  2. 通過make對(duì)源碼進(jìn)行編譯生成動(dòng)態(tài)庫和可執(zhí)行程序

交叉編譯的思路:首先我們要明白在開發(fā)環(huán)境中安裝qt時(shí)自帶的qmake是不能作為交叉編譯用的,因?yàn)樗傻腗akefile中所采用的gcc和g++編譯器都是對(duì)應(yīng)x86和windows的。再就是我們?nèi)绻俳徊婢幾g服務(wù)器(X86/Linux)上直接安裝Linux版本的qt的話,這個(gè)qt自帶的qmake也不能作為交叉編譯用,因?yàn)樗傻腗akefile中所采用的gcc和g++編譯器都是對(duì)應(yīng)x86和Linux的。因此我們首先要找到對(duì)應(yīng)目標(biāo)系統(tǒng)(Arm/Linux)的qmake才行。

2、我是通過buildroot構(gòu)建目標(biāo)操作系統(tǒng)的,因?yàn)橐谀繕?biāo)系統(tǒng)中運(yùn)行qt的程序,因此在構(gòu)建過程中要把qt的環(huán)境編譯到目標(biāo)系統(tǒng)中,構(gòu)建完畢后會(huì)在buildroot目錄下生成output目標(biāo),我們可以采用這下面的qmake生成采用交叉編譯器的Makefile,如下:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

qmake的目錄為:SDK/buildroot/output/rockchip_rk3568/host/bin/qmake
其中SDK表示編譯目標(biāo)Linux系統(tǒng)的源碼目錄
rockchip_rk3568對(duì)應(yīng)的是芯片型號(hào)

3、我們先把qt源碼部署到交叉編譯環(huán)境中,如下:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)
4、下載oracle instant client
4.1 首先要下載oracleclient,因?yàn)樵诰幾goci驅(qū)動(dòng)時(shí)要依賴oracleclient中的庫和頭文件。下載地址為:
https://www.oracle.com/database/technologies/instant-client/downloads.html
如下圖:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

Oracle Instant Client的下載要根據(jù)操作系統(tǒng)版本和Oracle服務(wù)器版本匹配才行。我開發(fā)環(huán)境是Windows10 64位系統(tǒng),因此選擇的是Instant Client for Microsoft Windows (x64)

4.2 點(diǎn)擊后會(huì)出現(xiàn)Oracle Instant Client版本選擇,如下圖:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

不同的Oracle Instant Client版本支持的Oracle服務(wù)器的版本也不相同,我用的Oracle服務(wù)器版本是11.2,這里選擇的版本是Version 19.xx.x.x.x,我之前下載的是19.19,現(xiàn)在截圖的時(shí)候已經(jīng)是19.20,差別不大。
4.3 可以看到有BasicPackage、SQL*Plus Package、Tools Package、SDK Package、JDBC Supplement Package、ODBC Package等包的下載,如下圖:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

4.5 然后把這4個(gè)壓縮包上傳到交叉編譯服務(wù)器的/opt/oracleclient_arm64/instantclient_19_19這個(gè)目錄下,如下圖:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)
4.6 使用unzip命令解壓這4個(gè)壓縮包(basic和sdk這2個(gè)是必須要解壓的),如下圖:

unzip instantclient-basic-linux.arm64-19.19.0.0.0dbru.zip
unzip instantclient-sdk-linux.arm64-19.19.0.0.0dbru.zip

QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)
5、通過vim修改psql.pro工程文件內(nèi)容,注釋掉QMAKE_USE += psql,如下:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

一定要注意,oci在Linux下編譯依賴的庫為clntsh,不同于windows下依賴oci。

然后按ESC,輸入wq保存退出。
6、然后在oci源碼目錄下使用交叉編譯環(huán)境下的qmake生成Makefile,如下圖:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)
7、輸入make命令進(jìn)行編譯,如下圖:
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)
8、編譯完畢后,會(huì)生成libqsqloci.so文件,如下圖。
QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板,qt,數(shù)據(jù)庫,qt,學(xué)習(xí)

目錄:QtSrc/qtbase/src/plugins/sqldrivers/plugins/sqldrivers
其中QtSrc表示Qt的源碼目錄。
我這里雖然用的是Qt5.14.2的源碼,但是我目標(biāo)系統(tǒng)是Qt5.15.2的運(yùn)行環(huán)境,不過這些數(shù)據(jù)庫驅(qū)動(dòng)的代碼都沒什么變化,因此沒什么影響。

至此終于生成了支持目標(biāo)系統(tǒng)(Arm/Linux)能夠識(shí)別的數(shù)據(jù)庫驅(qū)動(dòng)庫libqsqlpsql.so。

3、把數(shù)據(jù)庫驅(qū)動(dòng)部署到目標(biāo)系統(tǒng)中

1、首先通過MobaXterm以SSH方式連接到目標(biāo)系統(tǒng)(開發(fā)板系統(tǒng))。
2、在/usr/lib/qt/plugins目錄下創(chuàng)建目錄sqldrivers。
3、把在交叉編譯服務(wù)器中生成的QtSrc/qtbase/src/plugins/sqldrivers/plugins/sqldrivers/libqsqlpsql.so文件傳到目標(biāo)系統(tǒng)的/usr/lib/qt/plugins/sqldrivers目錄下,至此,目標(biāo)系統(tǒng)就支持Qt程序?qū)ostgresql數(shù)據(jù)庫的訪問了。文章來源地址http://www.zghlxwxcb.cn/news/detail-646720.html

到了這里,關(guān)于QT學(xué)習(xí)筆記-oracle oci數(shù)據(jù)庫驅(qū)動(dòng)交叉編譯并移植到ARM開發(fā)板的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Qt+MySql開發(fā)筆記:Qt5.9.3的msvc2017x64版本編譯MySql8.0.16版本驅(qū)動(dòng)并Demo連接數(shù)據(jù)庫測(cè)試

    Qt+MySql開發(fā)筆記:Qt5.9.3的msvc2017x64版本編譯MySql8.0.16版本驅(qū)動(dòng)并Demo連接數(shù)據(jù)庫測(cè)試

    若該文為原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明原文出處 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130381428 紅胖子網(wǎng)絡(luò)科技博文大全:開發(fā)技術(shù)集合(包含Qt實(shí)用技術(shù)、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機(jī)、軟硬結(jié)合等等)持續(xù)更新中… ??mysql驅(qū)動(dòng)版本msvc2015x32版本調(diào)

    2023年04月26日
    瀏覽(49)
  • idea連接oracle數(shù)據(jù)庫,手動(dòng)引入驅(qū)動(dòng)jar包

    由于oracle的授權(quán)問題,從maven倉庫中不能直接下載到j(luò)dbc-oracle驅(qū)動(dòng),因此若項(xiàng)目使用了oralce數(shù)據(jù)庫,則需要手動(dòng)引入jar包 一、本地安裝maven并配置環(huán)境變量(這里不再細(xì)說,可自行百度) 二、下載連接oracle數(shù)據(jù)庫所需的驅(qū)動(dòng)包 我用的是jdk1.8,下載的是驅(qū)動(dòng)包是ojdbc6 下載地址:

    2024年02月13日
    瀏覽(31)
  • (java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver)IDEA中連接Oracle數(shù)據(jù)庫失敗,缺少驅(qū)動(dòng)

    (java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver)IDEA中連接Oracle數(shù)據(jù)庫失敗,缺少驅(qū)動(dòng)

    該問題出現(xiàn)在用idea連接Oracle數(shù)據(jù)庫的時(shí)候,代碼都寫好了但是發(fā)現(xiàn)連不上Oracle。 (或者是能連Oracle,但是只能連一半。。。) 首先要保證自己的Oracle數(shù)據(jù)庫是啟動(dòng)了的噢。 運(yùn)行代碼時(shí),也就是這行代碼會(huì)一直報(bào)錯(cuò): 連接oracle數(shù)據(jù)庫時(shí),一直報(bào)錯(cuò)找不到驅(qū)動(dòng),后來發(fā)現(xiàn)自己

    2024年02月04日
    瀏覽(99)
  • QT mysql 驅(qū)動(dòng)-數(shù)據(jù)庫安裝以及qt連接ssl報(bào)錯(cuò)問題

    QT mysql 驅(qū)動(dòng)-數(shù)據(jù)庫安裝以及qt連接ssl報(bào)錯(cuò)問題

    文章末尾是引用筆記 配置MySQL8.0 環(huán)境變量 如果不配置MySQL環(huán)境變量,就不能在命令行直接輸入MySQL登錄命令。下面說如何配置MySQL的環(huán)境變量: 步驟1:在桌面上右擊【此電腦】圖標(biāo),在彈出的快捷菜單中選擇【屬性】菜單命令。 步驟2:打開【系統(tǒng)】窗口,單擊【高級(jí)系統(tǒng)設(shè)

    2024年01月20日
    瀏覽(27)
  • Qt 添加MySQL驅(qū)動(dòng)教程 以及 操作數(shù)據(jù)庫(增刪查改)

    Qt 添加MySQL驅(qū)動(dòng)教程 以及 操作數(shù)據(jù)庫(增刪查改)

    前言: 使用MySQL數(shù)據(jù)庫前我們必須添加MySQL驅(qū)動(dòng),有了驅(qū)動(dòng)我們才能連接數(shù)據(jù)庫,連接數(shù)據(jù)庫成功后才能操作數(shù)據(jù)庫(增刪查改)。 Qt 添加MySQL驅(qū)動(dòng)教程 如下(本人親測(cè)成功版): https://download.csdn.net/download/qq_42432673/88093467 在數(shù)據(jù)庫中創(chuàng)建表,表結(jié)構(gòu)如下: 現(xiàn)在驅(qū)動(dòng)已經(jīng)引入

    2024年02月15日
    瀏覽(38)
  • QT連接MySql數(shù)據(jù)庫失敗,編譯驅(qū)動(dòng)問題,最詳細(xì)解決辦法

    QT連接MySql數(shù)據(jù)庫失敗,編譯驅(qū)動(dòng)問題,最詳細(xì)解決辦法

    各位讀者你們好?? 此篇是本專欄的第一篇,本專欄專門收錄在學(xué)習(xí)過程中遇到的環(huán)境配置、軟件問題等開發(fā)環(huán)境方面的問題。?????? 剛剛轉(zhuǎn)陰就迫不及待的趕緊寫一篇博客來解決一直落下的一個(gè)問題: 關(guān)于QT和MySql數(shù)據(jù)庫的連接問題??(在本人經(jīng)過整整三天的無限踩坑之

    2024年02月05日
    瀏覽(16)
  • 【筆記】oracle線上生產(chǎn)數(shù)據(jù)庫使用exp的方式更新到本地

    【筆記】oracle線上生產(chǎn)數(shù)據(jù)庫使用exp的方式更新到本地

    今天的任務(wù)是:將線上老的數(shù)據(jù)庫里的數(shù)據(jù)同步到本地現(xiàn)有的二期數(shù)據(jù)庫中來,即二期項(xiàng)目需要線上數(shù)據(jù)進(jìn)行最后測(cè)試,于是就有了今天這篇,線上生產(chǎn)數(shù)據(jù)庫更新到本地?cái)?shù)據(jù)庫的筆記。 由于數(shù)據(jù)量較大,我嘗試過將線上的表導(dǎo)出成一個(gè)個(gè)Excel或者insert語句來完成更新,但是

    2024年02月16日
    瀏覽(37)
  • 配置OCI上數(shù)據(jù)庫服務(wù)的EM Database Express

    配置OCI上數(shù)據(jù)庫服務(wù)的EM Database Express

    本文參考了以下文檔: DBCS: How To Setup EM Express in Bare Metal and Virtual Machine DB Systems(OCI) (Doc ID 2453454.1) Oracle Database 12c: EM Database Express Access the Database Home Page in EM Database Express 默認(rèn)是沒有設(shè)置的。這可以通過以下命令確認(rèn): 設(shè)置HTTPS端口為5500: 確認(rèn),其中的PROTOCOL為tcps,表示是

    2024年02月07日
    瀏覽(31)
  • 軟件設(shè)計(jì)開發(fā)筆記4:QT操作SQLite數(shù)據(jù)庫

    軟件設(shè)計(jì)開發(fā)筆記4:QT操作SQLite數(shù)據(jù)庫

    ??有時(shí)候我們需要在軟件中記錄一些歷史數(shù)據(jù)以便于對(duì)數(shù)據(jù)的查詢。而我們希望軟件不能太復(fù)雜,體量也不要太大,這個(gè)時(shí)候就需要如SQLite這樣輕量級(jí)的數(shù)據(jù)庫。這篇中我們就來討論如何在使用QT開發(fā)應(yīng)用是操作SQLite數(shù)據(jù)庫。 ??SQLite是一款開源、輕量級(jí)、跨平臺(tái)的數(shù)據(jù)庫

    2024年02月09日
    瀏覽(24)
  • Qt程序連接Access數(shù)據(jù)庫,出現(xiàn)“[Microsoft][ODBC 驅(qū)動(dòng)程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序 QODBC3: Unable to connect“錯(cuò)誤的解決辦法

    1、\\\"[Microsoft][ODBC 驅(qū)動(dòng)程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序 QODBC3: Unable to connect\\\" 或者 2、\\\"[Microsoft][ODBC 驅(qū)動(dòng)程序管理器] 在指定的 DSN 中,驅(qū)動(dòng)程序和應(yīng)用程序之間的體系結(jié)構(gòu)不匹配 QODBC3: Unable to connect\\\"的錯(cuò)誤的解決辦法) 電腦系統(tǒng):windows 10 64位操作系統(tǒng),基

    2024年02月05日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包