QT程式,如何在ARM板上執行
阿新 • • 發佈:2019-02-13
寫這篇文章,主要是為了說明怎麼讓PC機下編譯好的QT程式移植到板子上執行。在說明之前,我們要了解一個事情,就是QT。QT是一個跨平臺的開發工具,具有很好的移植性,它所依賴的庫檔案在PC機上和在ARM上是不一樣的,那麼我要怎麼做呢?
很簡單,就是重新編譯已經寫好的QT程式。為什麼需要重新編譯,第一,ARM的CPU的指令集和PC的CPU指令集肯定是不一樣的,也就是需要交叉編譯。第二:由於QT所依賴的庫檔案不一樣,在不同的指令集得CPU裡,庫是需要移植的。我這裡假設ARM板的檔案系統裡已經移植好了QT相關的庫檔案(具體怎麼移植,我會再寫一篇文章),移植好後,在開發板上就可以移植QT程式了。
那麼,具體我要怎麼編譯呢?我們都知道,編譯好的QT的程式,一般會有幾個.CPP\.h檔案,這麼多的檔案我們要怎麼樣編譯。首先,我們需要安裝QT版本的庫,一定要注意,這個庫檔案一定和開發板上的是同一個庫。我們假設這個庫名字叫qtembed450-arm。以下步驟一定要注意:
1.安裝目錄一定要在“/usr/local/”下;
2.安裝成功後,這步非常關鍵,一定要設定環境變數,而且,我們要設定三個環境變數,這樣做有三個目的:①可以在任何路徑下用庫裡的命令②編譯時候可以指定編譯規則為arm-linux-g++③編譯時候可以指定到所需要的庫檔案。那麼安裝後,輸入一下命令:gedit /root/.bashrc.這個命令執行後就進入到設定環境變數的地方,我們要加入以下三個環境變數的設定:
export PATH=$PATH:/usr/local/qtembed450-arm/bin
export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib
export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default
以上設定非常的重要,非常的關鍵。呵呵,先照著設定,具體原因我會細談。注意,我編譯用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以開啟看看哦!環境變數設定好後,用which qmake-arm 命令來確認下是否成功,呵呵。
3.準備工作做到這裡,算是進行一半了,哎,真累啊!還要接著寫呢。接下來我們要把我們的編譯好的QT程式的資料夾開啟,把裡面的 .CPP/.h檔案拷貝出來,新建立一個資料夾;
4.把以上的檔案裡的.cpp .h檔案複製後新建立一個資料夾。
5.新資料夾建立後,在linux終端中進入到該資料夾所在目錄下,執行這個命令:qmake-arm -project命令,千萬注意,-project 和arm之間一定要有空格啊!該命令執行後,會生成一個.pro檔案,緊接著呢,執行qmake-arm命令,該命令執行後呢,會生成一個Makefile檔案,這步很關鍵哦,沒有這步就不會有Makefile檔案,一般在這步會出現很多錯誤,就是庫沒有發現之類,這個時候,一定要檢查前面的步驟,仔細檢檢視是否是錯誤。我們這個時候開啟Makefile檔案看一下,會發現,裡面的編譯已經變成arm-linux-g++。這個時候,就踏實,接下來怎麼辦?還用問嗎,直接make下就好了,哈哈,簡單吧!看到上面的qtmyjpg檔案了嗎?這個是可以在開發板上執行的哦!接下來不用我說了吧,直接傳送到開發板上執行,可以看到圖片嘍!
6.下到開發板上之後呢,通常會發現沒有許可權,執行chmod +x qtmyjpg 就可以了,但是注意,要執行這個qtmyjpg檔案,一定要這樣輸入命令:./qtmyjpg -qws為什麼需要加這個引數呢?很簡單,你不加執行時會出現錯誤原因,自己看下吧,哈哈!
7.一般這個時候觸控式螢幕需要矯正。進入“/usr/tslib/bin/”,檢視裡面的檔案,有一個“ts-calibrate”檔案,執行這個檔案,./ts-calibrate 後,可以看到LCD螢幕上出現十字點,用觸控筆點一下就可以,至此,整個QT在LCD上顯示整理完畢。
很簡單,就是重新編譯已經寫好的QT程式。為什麼需要重新編譯,第一,ARM的CPU的指令集和PC的CPU指令集肯定是不一樣的,也就是需要交叉編譯。第二:由於QT所依賴的庫檔案不一樣,在不同的指令集得CPU裡,庫是需要移植的。我這裡假設ARM板的檔案系統裡已經移植好了QT相關的庫檔案(具體怎麼移植,我會再寫一篇文章),移植好後,在開發板上就可以移植QT程式了。
那麼,具體我要怎麼編譯呢?我們都知道,編譯好的QT的程式,一般會有幾個.CPP\.h檔案,這麼多的檔案我們要怎麼樣編譯。首先,我們需要安裝QT版本的庫,一定要注意,這個庫檔案一定和開發板上的是同一個庫。我們假設這個庫名字叫qtembed450-arm。以下步驟一定要注意:
1.安裝目錄一定要在“/usr/local/”下;
2.安裝成功後,這步非常關鍵,一定要設定環境變數,而且,我們要設定三個環境變數,這樣做有三個目的:①可以在任何路徑下用庫裡的命令②編譯時候可以指定編譯規則為arm-linux-g++③編譯時候可以指定到所需要的庫檔案。那麼安裝後,輸入一下命令:gedit /root/.bashrc.這個命令執行後就進入到設定環境變數的地方,我們要加入以下三個環境變數的設定:
export PATH=$PATH:/usr/local/qtembed450-arm/bin
export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib
export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default
以上設定非常的重要,非常的關鍵。呵呵,先照著設定,具體原因我會細談。注意,我編譯用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以開啟看看哦!環境變數設定好後,用which qmake-arm 命令來確認下是否成功,呵呵。
3.準備工作做到這裡,算是進行一半了,哎,真累啊!還要接著寫呢。接下來我們要把我們的編譯好的QT程式的資料夾開啟,把裡面的 .CPP/.h檔案拷貝出來,新建立一個資料夾;
4.把以上的檔案裡的.cpp .h檔案複製後新建立一個資料夾。
5.新資料夾建立後,在linux終端中進入到該資料夾所在目錄下,執行這個命令:qmake-arm -project命令,千萬注意,-project 和arm之間一定要有空格啊!該命令執行後,會生成一個.pro檔案,緊接著呢,執行qmake-arm命令,該命令執行後呢,會生成一個Makefile檔案,這步很關鍵哦,沒有這步就不會有Makefile檔案,一般在這步會出現很多錯誤,就是庫沒有發現之類,這個時候,一定要檢查前面的步驟,仔細檢檢視是否是錯誤。我們這個時候開啟Makefile檔案看一下,會發現,裡面的編譯已經變成arm-linux-g++。這個時候,就踏實,接下來怎麼辦?還用問嗎,直接make下就好了,哈哈,簡單吧!看到上面的qtmyjpg檔案了嗎?這個是可以在開發板上執行的哦!接下來不用我說了吧,直接傳送到開發板上執行,可以看到圖片嘍!
6.下到開發板上之後呢,通常會發現沒有許可權,執行chmod +x qtmyjpg 就可以了,但是注意,要執行這個qtmyjpg檔案,一定要這樣輸入命令:./qtmyjpg -qws為什麼需要加這個引數呢?很簡單,你不加執行時會出現錯誤原因,自己看下吧,哈哈!
7.一般這個時候觸控式螢幕需要矯正。進入“/usr/tslib/bin/”,檢視裡面的檔案,有一個“ts-calibrate”檔案,執行這個檔案,./ts-calibrate 後,可以看到LCD螢幕上出現十字點,用觸控筆點一下就可以,至此,整個QT在LCD上顯示整理完畢。