|
本帖最后由 limuscle 于 2013-3-4 11:37 编辑
1、编译ARM版本的Qt4.5
./arm_qt4.5_build。以下是脚本的内容,prefix改为/opt/qt-embedded-4.5.3
- cd $PWD/qt-embedded-linux-opensource-src-4.5.3
- echo yes | ./configure -prefix /opt/qt-embedded-4.5.3 -release -shared -fast -pch -no-qt3support -q
- t-sql-sqlite -qt-libtiff -qt-gif -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -no-openssl
- -nomake examples -nomake demos -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -qt-sql-sql
- ite -no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16 -no-qvfb -qt-gfx-
- linuxfb -no-gfx-qvfb -qt-kbd-usb -no-kbd-qvfb -no-mouse-qvfb -qt-mouse-tslib -I/tslib/include -L/t
- slib/lib
- echo "Finished config Qt-embedded-4.5.3"
- echo
复制代码 cd $PWD/qt-embedded-linux-opensource-src-4.5.3
make && make install
编译成功并且是成功安装的。
2、建立源码:main.cpp、hello_cn.cpp 和hello_cn.h 这个代码就不贴了。保存在/work/GUI/opt/qt-x11-opensource-src-4.5.3/examples/Limuscle/hello_cn文件夹中
3、在hello_cn文件夹中建立项目脚本。由于是用于arm的。所以
embedded_project.sh:
$QMAKE -project
$QMAKE
4、导入arm的环境变量:
qt4.5.3_embedded_setenv.sh:保存在hello_cn目录下
export QPEDIR=/opt/qt-embedded-4.5.3/bin
export QTOPIA_DEPOT_PATH=/opt/qt-embedded-4.5.3/bin
export QTDIR=/opt/qt-embedded-4.5.3/bin
export DQTDIR=/opt/qt-embedded-4.5.3/bin
export QMAKE=/opt/qt-embedded-4.5.3/bin/qmake
export UIC=/opt/qt-embedded-4.5.3/bin/uic
export TMAKEDIR=/opt/qt-embedded-4.5.3/bin
export TMAKEPATH=/opt/qt-embedded-4.5.3/mkspecs/qws/linux-arm-g++
export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH
export PATH QTDIR MANPATH LD_LIBRARY_PATH
echo " set qt-embedded-4.5.3 env successful "
echo
以上脚本本来是按照 天嵌提供的setARM_env来的,但是发现原来的TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++这个是没有的,于是修改了,改为export TMAKEPATH=/opt/qt-embedded-4.5.3/mkspecs/qws/linux-arm-g++。这里是不是我搞错了。
5、开始执行。
source qt4.5.3_embedded_setenv.sh
./embedded_project
到这一步可以得到Makefile文件的。
打开Makefile,
- CC = gcc
- CXX = g++
- DEFINES = -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -
- DQT_SHARED
- CFLAGS = -pipe -g -O2 -Wall -W -D_REENTRANT $(DEFINES)
- CXXFLAGS = -pipe -g -O2 -Wall -W -D_REENTRANT $(DEFINES)
- INCPATH = -I../../../mkspecs/linux-g++ -I. -I../../../include/QtCore -I../../../include/QtGui
- -I../../../include -I. -I.moc/release-shared
- LINK = g++
- LFLAGS = -Wl,-O1 -Wl,-rpath,/work/GUI/opt/qt-x11-4.5.3/lib -Wl,-rpath,/work/GUI/opt/qt-x11-4.
- 5.3/lib
复制代码
以上是一部分,可以看到CC,CXX,LINK是用的是x86上的编译器,不是arm-linux-gcc,arm-linux-g++,
如果使用这个Makefile文件,编译出来的执行文件肯定不可用啦。
执行file hello_cn
- hello_cn: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
复制代码
可以看到是80386机器类型上执行的文件。
问题:为什么不是生成arm-linux-gcc类型的Makefile,究竟哪一步我错了。
还有一个说明一下:就是那个qt4.5.3编译arm版本生成安装/opt/qt-embedded-4.5.3/应该是成功的。因为之前我试第一次hello_cn时是成功生成arm下的执行文件,并且可以在开发板上运行的。
|
|