你找下,是不是在哪個makefile腳本或類似config.mk的腳本里有個變數,變數值為編譯器名字的。
它可能是這樣的:
cross_compile
:=
arm-linux-
hostcxx
=
g++
這兩個名字拼起來才是交叉編譯器的名字,如果只用了hostcxx或者cross_compile為空,它就用的g++了
B. 緊急求助QT程序交叉編譯
要將我們寫好的程序發布到開發板上,我們需要對Qt/Embedded 重新編譯,與前面在宿主機上編譯類似,步驟如下:
1. Build Qt/Embedded
tar –xzvf qt-embedded-2.3.10-free.tar.gz
mv qt-2.3.10 qt-2.3.10-target
export TMAKEDIR=$PWD/tmake-1.13
export QT2DIR=$PWD/qt-2.3.2
export QTEDIR=$PWD/qt-2.3.10-target
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
make clean
./configure -xplatform linux-arm-g++ -no-xft -no-qvfb -depths 4,8,16,32
make
出現
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator new[](unsigned int)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator delete(void*)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `__cxa_pure_virtual'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator delete[](void*)'
/public/qt/qt-2.3.10-target/lib/libqte.so: undefined reference to `operator new(unsigned int)'
collect2: ld returned 1 exit status
make[4]: *** [t1]
暫時不管它,不影響的。下面的第2步: 「修改tmake 配置文件」 即可解決此類問題。
這步完成後,我們會在/$QTEDIR/lib/目錄下面看到libqte.so libqte.so.2 libqte.so.2.3 libqte.so.2.3.10 這四個文件,我們可以使用file 命令來查看這個庫文件是否是我們需要的在開發板上跑的庫。
file libqte.so.2.3.10
libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped
有了這個庫以後我們就可以把它拷貝到我們的開發板中相應的庫目錄下面,這里我們選擇了開發板上的/usr/lib 目錄,將/$QTEDIR/lib/下的libqte.so*復制到/usr/lib 目錄下。
首先要建立宿主機和開發板的通訊,假設本機的ip 地址為192.168.0.56 並且/root/share 為共享文件夾。
cp –arf /$QTEDIR/lib/libqte.so* /root/share
啟動minicom
mount –t nfs –o nolock 192.168.0.56:/root/share /mnt/nfs將文件復制到開發板上
cp –arf /mnt/nfs/libqte.so* /usr/lib
本篇文章來源於 黑軟基地-中國最大的黑客軟體安全教程QQ資源下載站! 原文鏈接:http://www.hackvip.com/article/sort0136/sort0186/Hackvip_184143.html
C. 如何進行Qt應用程序的交叉編譯
1.設置環境變數: PATH=添加為交叉環境下編譯後生成的qmake路徑,通常和主機的系統是一種架構,同時需要確保交叉gcc編譯器在在PATH定義 QMAKESOEC=交叉編譯的對象的的平台描述文件,例如makespec/qws/linux-arm-g++ QTDIR=Qt的安裝文件,存放這庫和頭文件 LD_LIBRARY_PATH=存放的是Qt的交叉編譯後的庫,准備為目標編譯鏈接的庫 2。執行環境變數 通常我們都會將以上的設置放置在一個bash腳本中,需要的時候就執行一下。開始編譯 1.使用qmake -project來生成項目文件****.pro 2使用qmake來生成Makefile文件 3使用make來編譯移植:使用readeif工具來分析目標系統的以來庫,然後相關的庫到目標文件系統內。通常我們也是採取腳本的方式來完成。 一般而言,凡是有規律的或者重復性的工作,我們都可以採取腳本的方式來解決。
D. QT交叉編譯時怎麼添加靜態庫,急!!!
INCPATH = -I../EmbedSky/qt-4.5/__install/arm/mkspecs/default -I. -I../EmbedSky/qt-4.5/__install/arm/include/QtCore -I../EmbedSky/qt-4.5/__install/arm/include/QtNetwork -I../EmbedSky/qt-4.5/__install/arm/include/QtGui -I../EmbedSky/qt-4.5/__install/arm/include -I. -I. -I.
在這里增加你編譯的靜態庫。。。可以試試,我也是新手
E. 如何在ubuntu下搭建qt交叉編譯環境
第一步,你需要下載QT源代碼(4.8的編譯比較容易),然後通過 ./configure (參數自己定,不懂看readme)接下來就是在QT CREATE裡面配置了,如下:
工具-->選項--->構建和運行
1. 編譯器: 點擊添加: "名稱"隨意
"編譯器路徑" **/arm-none-linux-gnueabi-g++
找到你的編譯器,我這里是用ARM的
其他不填也行.
2.Qt Versions: 點擊添加:找到通過源碼編譯好的qmake文件. 例如:/usr/local/Qt-4.8.6/bin/qmake
3.構建套件: 點擊添加: "名稱"隨意, 重點是 "編譯器"跟"QT版本", 分別選擇剛剛添加的兩項.
調試器:如果是桌面環境那就選桌面的, 如果是在嵌入式中的,那不要也可以..
如果是交叉編譯,那隻能編譯,不能運行...
F. Linux系統上用QT編寫ARM9繼電器控製程序的問題。 想寫個QT界面程序到arm板子上,通過界面的按鈕來控制繼電
以下是單片機實踐團為您解答:
1)既然你已經在windows下面搞qt了,轉到linux下面就沒啥編程問題了,都一樣的只是環境搭建有一點點不一樣。
2)windows下面直接用的qtsdk for windows的吧,其實是人家直接給你做好的環境,建議自己用everywhelesource自己編譯了解整個框架的結構,搞清楚windows下面如何顯示的問題就差不多清楚了。
3)啰嗦的說,windows下面你雖然能夠編譯你的代碼看到運行界面,不過我猜你沒有深入了解這個框架不是mfc他如何調用windows的顯示的,其實在linux下面道理也是一樣的。
4)下面說說要怎麼弄,主要是環境搭建,用你板子的交叉編譯器編譯qt源碼就是那個everywhelesource了,這個主要要搞清楚那個configure,進入目錄運行他生成makefile,記得configure後面要帶參數,很多的比如你的交叉編譯器。你可以用--help來看這些參數的詳細說明。這些你要找點專業的文章來看看,英文好點可以直接上官方網站看的,很詳細。
5)編譯好這個之後其實你就可以直接把windows下面的代碼拿來再次編譯就行了,不過有一點你控制繼電器的話還要你板子的gpio驅動,也就是控制引腳的,一般板子的驅動都有的。
6)如果你要模擬的話還要編譯x11版本的qt,這個主要是要得到那個虛擬顯存,用於調試用的,不用直接搞到板子上看效果,這個是x86版本提供的快捷方式,一般都用的,嗯很多的,看一些文章吧,畢竟我只能給你說個大綱蓋的。
7)再說個你這就零分,不然給你多說點,看著煩。不明白在hi我吧。
G. 怎樣交叉編譯一個QT應用程序
? 為此我寫下我在工作中的一點小經驗,希望對曾經像我一樣困惑的新手們有點幫助,同時也希望能得到大家的指正, 首先得把我們在X86機上調好的程序進行交叉編譯,如果在X86上都沒有通過的話。。那就不用交叉編譯了,(肯定是通不過的),還是到正題吧, 設置好環境變數,我們用以用echo 來查看環境變數,echo $TMAKEPATH ,如果返回的不是.../qws/linux-arm-g++ 的字元的話,我們一定得從新設置, export TMAKEPATH=/tmake 的安裝路徑/qws/linux-arm-g++ ,同時QTDIR一定得要指定QTE的安裝路徑,設置過程如下: export QTDIR=...../qt-2.3.7 以上環境設置好後,我們可以使用tmake來生成Makefile,注意這里我們是用tmake,而不是用qmake(注意),tmake工具在tmake包裡面。 具體做法,我們可以在命令行下打: tmake -o Makefile 工程名.pro 這樣我們就新生成了一個Makefile文件,下一步,我們要打開這個文件,做一些小的修改 1: 將LINK=arm-linux-gcc 改為:LINK=arm-linux-g++ 2:將LIBS=$(SUBLIBS) -L$(QTDIR)/lib -lm -lqte這句話改為: LIBS=$(SUBLIBS) -L/opt/gcc-2.3.2-glibc-3.3.2/lib -L$(QTDIR)/lib -lm -lqte 加上你的交叉編譯的庫。。。最後我們可以make了,一個可以在您的板子上可以運行的二進制文件產生了。 至於怎樣加到qtopia上去呢。。。待續。。。。。。。。。。。。。。
H. 小白求助,如何在ubuntu的QT creator下完成交叉編譯
你需要先安裝嵌入式版本的Qt
以下是我編譯Qt時的命令:樓主看著自行改
./configure -prefix /opt/QtEmbedded-4.7.3 -release -shared -fast -pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomake tools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -confirm-license -qt-mouse-tslib
然後把生成的Qt的qmake所在的目錄加入的Qt creater中,工具鏈就選你上面的那個arm-linux-g++
然後新建項目的時候就可以選擇 Embedded什麼來著
這樣就搞定了!
I. 怎樣交叉編譯QT程序使之能在目標板上運行!
最主要的還是,你的QT在PC上運行的x86的,最後要換成arm結構的,你得懷疑下你的bin是不是真的是arm架構的。