讓Qt在MIPS Linux上運行 good


下載

首先下載Qt everywhere,當前的版本是4.7.2,可以從nokia的網站上下載,也可以從git服務器上下載。考慮到文件有200M 以上的大小,下載速率低於25kBPS的,需要考慮從什么地方復制一份,否則需要等待較長時間才能下載下來。我是在家里下載這個文件的,所以開始編譯已經是第二天了。考慮提升員工效率的話,需要預先預備好這些下載文件,或者增加接入帶寬。

解壓

第一步下載的文件是一個tar包,所以需要解壓,通常解壓需要在unix/Linux環境下進行,如果只是看代碼,windows環境下的msys和cygwin環境也是可以順利進行解壓的,但直接不推薦直接用winrar解壓,有時會發現某些文件重名了,會一時不知道該用哪個替換哪個。解壓命令是tar -xvzf qt-everywhere-opensource-4.7.2.tar.gz。考慮到當前的PC速度普遍不差,很快解壓就會完成了,如果解壓超過5分鍾沒有完成,強烈建議考慮升級機器或檢查虛擬機配置是否有問題,因為編譯比解壓的耗時要多許多倍。

編譯

目標平台是一個MIPS架構的平台,我采用如下的configure

cd qt-everywehere-opensource-src-4.7.2
./configure -embedded mips -xplatform qws/linux-mips-g++ -little-endian -qt-gfx-linuxfb -no-opengl -no-multimedia -no-qt3support -no-script no-scripttools -no-audio-backend -no-openssl -no-sql-sqlite -no-largefile

configure開始時會交互確認采用opensource版本license過程,其后過程不需要干預。這個configure過程比較長,看起來configure編譯產生了一些工具,預備后繼工作的進行。

由於MIPS架構在Qt移植中屬於2nd tier,所以支持的並不太好,所以需要在configure結束后,手動進行一些修改。修改的文件在mkspecs/qws/linux-mips-g++/目錄下,名為qmake.conf,打開這個文件,發現一些問題,主要是編譯器名稱和CFLAGS,我使用的編譯器配置如下:
QMAKE_CC = mips-linux-gnu-gcc
QMAKE_CXX = mips-linux-gnu-g++
QMAKE_CFLAGS += -EL -mips32r2 -msoft-float
QMAKE_CXXFLAGS += -EL -mips32r2 -msoft-float
QMAKE_LINK = mips-linux-gnu-g++ -EL -mips32r2 -msoft-float -lrt
QMAKE_LINK_SHLIB = mips-linux-gnu-g++ -EL -mips32r2 -msoft-float -lrt

QMAKE_AR = mips-linux-gnu-ar cqs
QMAKE_OBJCOPY = mips-linux-gnu-objcopy
QMAKE_STRIP = mips-linux-gnu-strip

編譯相當耗時,(命令是qmake,)特別是編譯時包含了demo和sample部分。不過考慮到需要用這些demo和sample在目標平台上跑出效果來,就繼續等待吧。既然需要把Qt在嵌入式平台上運行,編譯的等待期恰好可以讀讀文檔什么的。在一台E5200的PC的ubuntu虛擬機上編譯,耗時非常之久,我違法了公司規定,昨晚下班時讓它繼續編譯,今天早晨來檢查,看到編譯已經完成了。

編譯后生成了一堆的文件,包括很多.so庫文件,將這些lib下的文件復制到目標平台上,Qt就基本上可以開始運行了。

問題

1.缺少libQtxxxx.so
解答:在LD_LIBRARY_PATH中增加libQtxxxx所在路徑。

2.Cannot create semaphore on ‘/tmp/qtembedd…
解答:請檢查kernel編譯時是否enable了system V IPC。Qt窗口系統依賴於此IPC方式。

3.缺少libstdc++.so, libz.so等
解答:請將交叉編譯器提供的目標平台動態庫復制到目標平台上,並在LD_LIBRARY_PATH中描述。

4.framebuffer sample不工作
解答:檢查平台視頻輸出接線,檢查framebuffer驅動是否正常初始化。

5.鼠標不work
解答:export QWS_MOUSE_PROTO=IntelliMouse:/dev/mouse0

6.browser無法訪問網頁
解答:
-檢查平台的ip地址ifconfig eth0
-檢查平台的路由表route add default gw
-檢查平台的dns設置/etc/resolv.conf,nameserver 8.8.8.8

至此,Qt版本已可以在MIPS Linux上運行,用它的browser demo也可以工作,只是性能不佳,下面應該屬於優化工作了,暫不在本文描述范圍。

總結

Qt平台的可移植性還是很不錯的,在遇到的問題中,最難解的是問題2,即所謂Cannot create semaphore的問題,從今天上午遇到開始,不停的搜索Google,但是很少有文章說到點子上,許多論壇上有人提問,時間范圍從2005年到2011年,但是很少看到最終解決的方法,所以在此文中稍作強調。

另外,browser的性能不敢恭維,qt 4.7.2是今年三月發布的,編譯出來的性能甚至不如同平台上運行Android瀏覽器的效果,有些讓人覺得疑惑,評測時,兩者均沒有打開2D加速。

 

https://d4linux.wordpress.com/2011/03/29/see_qt_run_on_mips_linux/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM