導航:首頁 > 源碼編譯 > 電腦qt編譯arm版可執行文件

電腦qt編譯arm版可執行文件

發布時間:2022-01-27 02:11:46

linux命令編譯qt程序時,默認使用的是arm-linux-gcc編譯器,生成的可執行程序無法

修改$QTDIR/mkspecs目錄下的符號鏈接default.將其指向linux-g++
$QTDIR是路徑,具體要看你把QT裝到什麼地方和QT本身的版本,一般是/usr/lib[64]/qt4
修改default符號鏈接的作用是讓qmake在生成Makefile的時候將Makefile文件中的編譯器變數$CC與$CXX賦值成gcc和g++

Ⅱ qt平台編寫的程序,編譯生成的可執行文件,可以隨意移植嗎

Qt的跨平台,是指「一次編寫,到處編譯」,也就是說你寫的代碼一般不需要做特殊處理就可以在不同的平台上用Qt進行編譯。
對於你所說的問題,你在win7 64位系統下編譯的程序,要看你編譯生成的是32位程序還是64位的程序。如果是32位的程序,那麼在32位和64位windows系統下運行都是沒問題的;如果是64位的程序,就只能在64位windows系統上運行了。
如果你的程序沒有什麼配置上的特殊要求,當然就不需要相關的配置了,只要把相應的dll文件拷貝到你的程序運行目錄下就可以了,你可以到網上搜下Qt程序的發布。

Ⅲ QT程序怎麼移植到開發板並運行

需要的條件:
1.上位機編譯好的可執行文件,以hello為例
在虛擬機的Ubuntu下,寫好代碼之後,定位到當前目錄,執行命令
$ qmake -project //生成工程文件.pro
$ qmake //生成makefile
$ make //生成可執行文件hello
注意這些命令是在arm版的qt環境下的編譯命令!執行qmake -v可查看其是否是arm版本,使用的是否是arm的庫!執行file hello 可以查看hello是否是arm下運行的程序!
2.移植好QT庫的開發板
剛開始學,只需要移植最基本的幾個庫就行了!觸摸屏的、滑鼠的、鍵盤的以後再說!分別是:libQtGui.so libQtCore.so libQtNetwork.so 以及fonts下的字型檔
為了防止錯誤,我一並把他們的相關鏈接文件so.4、 so.4.7、 so.4.7.2 都移植過去了!
移植方法你可以使用nfs !U盤!我用nfs速度太慢,非常不方便,索性用U盤拷過去了!因為這幾個庫小的不到1M,大的13M,U盤拷的還是很快的!比較讓我費勁的是虛擬機不支持把鏈接文件拖拽到xp環境下!我只要在虛擬機里用郵件發到我的郵箱里,再在xp環境下把這些東西下下來,再通過U盤拷貝!曲折啊。。。我的虛擬機U盤不識別!
1)從哪兒移植呢?
從你虛擬機里編譯安裝arm版的QT庫裡面拷!..arm/lib下
2)移植過去放在哪兒呢?
最好是跟你在虛擬機裡面的arm版QT所在目錄一樣,方便操作!看我的
分別在開發板下新建目錄:home/fengchao/qtenv/arm/lib
home/fengchao/qtenv/arm/bin
home/fengchao/qtenv/arm/lib/fonts
把那些.so文件放到lib裡面,把字型檔放到fonts裡面!
3.最重要的一步,設置環境變數!
在開發板的根目錄下執行:
$ vi /etc/profile
然後輸入
export QTDIR=/home/fengchao/qtenv/arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

保存退出! ok !
vi使用:打開文件之後,輸入i,進入編輯模式,再按ESC退出編輯模式進入命令模式,輸入:鍵入命令wq即保存退出,q退出

4.然後把你編譯好的hello這個可執行文件放到你的開發板上,隨便哪兒吧
然後執行
./hello -qws
然後你就可以看見開發板上有顯示了!但是可能文字較小,如果有中文可能還是亂碼,沒事,咱一步步往下來。。。
5.錯誤分析
1)提示沒有鏈接到字型檔
QFontDatabase: Cannot find font directory /home/fengchao/qtenv/arm/lib/fonts - is Qt installed correctly?
這個就是你沒裝好字型檔,好好檢查一下,修改過來!
2)提示沒有QtGui.so no such file of directory
也是因為你沒有移植好這個庫或者跟他鏈接的文件,再或者環境變數有誤!

Ⅳ 如何編譯arm上運行的qt2可執行文件

編譯好的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上顯示整理完畢,花了我半下午時間加上對曹老師的請教,終於完成,嘿嘿!趕緊試試哦!

Ⅳ QTcreator能在windows中交叉編譯arm平台程序嗎

這個估計沒必要,安裝一個虛擬機,然後安裝一個桌面版的里Linux系統,再在系統中安裝一個vim編輯器,再安裝一個gdb調試器,最後再arm-linux-gcc就可以編譯c文件了,要是你的很多源程序文件都在windows系統中,你可以設置Windows與Linux共享文件。這些東西在網上都可以找到教程,剛開始可能覺得Linux系統很不方便,但是要熟悉Linux系統就必須經常呆在Linux系統中,希望能幫到你。

Ⅵ QT程序的編譯是不是直接在linux里的qt creater 上設置一下,編譯就可以直接傳送到arm板上運行了

1.首先你要構建底包集,arm版上必須有能運行的qt庫才行啊,這個如果已經有了就無所謂了,如果沒有的話你得自己做。
2.交叉編譯設置
除了nokia給的可以直接往nokia手機上拷貝運行之外,其他的你得自己搞。
再牛逼的arm板子,沒有操作系統還提什麼GUI庫啊。

Ⅶ 如何讓qt生成arm體系結構的文件

qt項目中想添加編譯參數,修改***.pro文件,添加: QMAKE_CFLAGS = `pkg-config --cflags --libs dbus-glib-1`

Ⅷ 在Linux下用QT編寫的程序怎麼在ARM上運行

用戶程序insmod 核心模塊載入:具體如下:

核心模塊編譯完成後,基本上是個未經符號定位的目標文件(object)(當然,如果這個object又是一些子object經過ld -r生成的話,則子object之間的符號定位是已經完成的),object是一種可重定位的代碼,它可以載入到不同位置的內存執行。而真正載入進核心,並成為核心的一部分,則是用戶程序insmod和核心幾個系統調用共同完成的。在此過程中,insmod主要完成或通過系統調用完成以下的工作:
1)由參數找到模塊文件,如insmod foo.o,模塊文件就是foo.o,根據模塊文件計算出模塊文件所需的內存大小
2)調用系統調用create_mole,為該模塊分配核心空間內存
3)調用系統調用query_mole,得到核心提供的符號表,與系統調用create_mole的返回值(核心模塊首地址)加在一起對模塊進行重定位。
4)在用戶空間為核心模塊分配內存,並往該段內存復制一個經過定位的object映象。
5)調用系統調用init_mole,將用戶內存中的模塊映象到相應的核心空間(首地址為create_mole的返回值)。
6)釋放用戶內存,中止insmod運行。
如果一切順利,沒有出現未定位的符號,則核心模塊object就融入系統,成為系統的一部分了。
核心模塊的載入過程對核心來說實際是個「靜態鏈接」的過程,這和用戶程序動態鏈接運行過程再鏈接需要的代碼還是不太一樣的,當然,object的可重定位特性保證了鏈接後的代碼正常運行,這點倒是比較相似的。

閱讀全文

與電腦qt編譯arm版可執行文件相關的資料

熱點內容
pdf調字體大小 瀏覽:804
myeclipse命令行 瀏覽:126
小謝解壓 瀏覽:139
h264編碼器源碼 瀏覽:664
有什麼辦法翻錄加密視頻 瀏覽:666
java數據結構與演算法面試題 瀏覽:977
解壓不了是什麼意思 瀏覽:359
紐西蘭編程師年薪 瀏覽:321
程序員為什麼大多生閨女 瀏覽:51
c編程用英文還是中文 瀏覽:723
一點都不解壓的游戲 瀏覽:203
解壓為什麼不能用中文文件夾 瀏覽:615
伺服器如何解除備份 瀏覽:144
安卓手機為什麼用一年就變卡 瀏覽:11
如何用風變編程自動回復 瀏覽:512
安卓閱讀幣怎麼樣 瀏覽:437
京東app怎麼切號 瀏覽:583
進入傳奇伺服器後如何修改 瀏覽:42
m0單片機的cycle怎麼知道 瀏覽:806
linux命令太長 瀏覽:782