ubuntu16交叉編譯Qt5.9
1、安裝交叉編譯器
一般購買ARM開發板,對應的交叉編譯器會由廠商提供。交叉編譯器也就是能在X86的環境下編譯出ARM中能執行的程式,例如cortex-A9的交叉編譯器:
將這個包在ubuntu中解壓,路徑自己決定。然後將這個交叉編譯器中的bin目錄加入環境變數,例如我的:
export PATH=/home/clark/QtEnv/arm-cortexa9-linux-gnueabihf/4.9.3/bin:$PATH
設定ubuntu環境變數可以參考我的部落格:http://blog.csdn.net/a18373279153/article/details/78542605
驗證環境變數是否設定成功,在控制檯中輸入***-g++ -v,其中***代表你的交叉編譯器的名字,每種型別的晶片對應的不一樣,具體可以去bin目錄下檢視,例如我的是:
所以我需要輸入arm-cortexa9-linux-gnueabihf-g++ -v,然後控制檯中出現編譯器的版本號就代表你安裝成功了。如果找不到,可能是你在64位的作業系統上安裝了32位的交叉編譯器,請看我這篇文章:https://blog.csdn.net/a18373279153/article/details/49658425
2、交叉編譯Qt
首先在Qt官網下載對應的Qt原始碼:http://download.qt.io/archive/qt/
在ubuntu中解壓縮,跳轉到qt-everywhere-opensource-src-5.9.1/qtbase/mkspecs/linux-arm-gnueabi-g++/目錄下,修改qmake.conf檔案,將編譯器都更換為剛剛安裝的交叉編譯器,例如我的:
再跳轉到qt-everywhere-opensource-src-5.9.1目錄下,配置安裝選項:
./configure -release -nomake examples -no-iconv -no-opengl -no-assimp -no-qt3d-profile-jobs -no-qt3d-profile-gl -xplatform linux-arm-gnueabi-g++ -prefix /home/user/QtEnv/QtEmbedded-5.9.1-arm -opensource -confirm-license
這裡我去掉了opengl、Qt3D相關的庫、examples,編譯他們三個會導致編譯失敗。
-prefix /home/user/QtEnv/QtEmbedded-5.9.1-arm這個是設定安裝位置,由你自己定義。
-no-iconv是為了防止應用程式出現如下錯誤:
QIconvCodec::convertFromUnicode: usingLatin-1 for conversion, iconv_open failed
QIconvCodec::convertToUnicode: using Latin-1for conversion, iconv_open failed
配置完成之後輸入:make -j4,表示開啟4個執行緒一起編譯,這樣會快些,編譯得個把小時。
編譯完成後,輸入make install,安裝Qt。
3、設定Qt Creator
同樣在Qt官網下載可以直接安裝的Qt,例如:
這個是linux64位桌面版的Qt,自帶Qt Creator。把他複製到ubuntu中後,可以直接./執行起來,影象化安裝。
接下來配置構建和執行,將剛剛安裝的QtEmbed版本和交叉編譯器都新增進去
注意:交叉編譯時只能點構建,不能點執行。因為編譯出程式是在arm跑的。
相關文章
- 交叉編譯編譯
- lazarus交叉編譯編譯
- golang交叉編譯Golang編譯
- GDB交叉編譯編譯
- go 交叉編譯,部署Go編譯
- 交叉編譯入門編譯
- 交叉編譯和 RPC編譯RPC
- linux與windows交叉編譯LinuxWindows編譯
- golang初學:交叉編譯Golang編譯
- 交叉編譯mupdf1.15.0編譯
- Rust 交叉編譯與條件編譯總結Rust編譯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- 編譯器的自展和自舉、交叉編譯編譯
- Go跨平臺交叉編譯Go編譯
- Ubuntu交叉編譯環境配置Ubuntu編譯
- Go - armv7 交叉編譯Go編譯
- 交叉編譯工具鏈構建原理編譯
- 交叉編譯c++給android呼叫編譯C++Android
- Go語言交叉編譯工具goxGo編譯
- protobuf 的交叉編譯使用(C++)編譯C++
- 全網可用交叉編譯工具鏈大全編譯
- 關於Gdb工具的交叉編譯、移植編譯
- Tinyx 交叉編譯配置檔案(arm版)編譯
- 交叉編譯場景分析(arm-linux)(四)--編譯readline和ncurses編譯Linux
- 32位支援:使用 GCC 交叉編譯GC編譯
- 交叉編譯場景分析(arm-linux)--序編譯Linux
- 在WSL下為OpenWRT交叉編譯出CMake編譯
- 如何對 Neuron 原始碼進行交叉編譯原始碼編譯
- Golang在各平臺下如何交叉編譯Golang編譯
- 使用 goxc 方便的進行交叉編譯分發Go編譯
- 實現交叉編譯gdb和gdbserver(gdb-7.6)編譯Server
- 交叉編譯庫依賴問題的解決方法編譯
- Ubuntu16桌面版編譯和安裝OpenCV4Ubuntu編譯OpenCV
- FFmpeg開發筆記(十六)Linux交叉編譯Android的OpenSSL庫筆記Linux編譯Android
- FFmpeg開發筆記(八)Linux交叉編譯Android的FFmpeg庫筆記Linux編譯Android
- 掌握這些,輕鬆管理BusyBox:如何交叉編譯和整合BusyBox編譯
- 最新全志R11_Tina_2.5_交叉編譯器介紹編譯
- 全棧交叉編譯X86完成過程經驗分享全棧編譯
- Ubuntu16桌面版編譯OpenCV4的java庫和so庫Ubuntu編譯OpenCVJava