qt4.8 移植到Arm 平台

来源:互联网 发布:明教知乎 编辑:程序博客网 时间:2024/05/17 22:42


一、qt4.8  移植到Arm 平台


1、首先找个文件夹解压下载的qt-everywhere-opensource-src-4.8.5。打开/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf 修改编译器为交叉编译器,如下:


#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#


include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)


# modifications to g++.conf
QMAKE_CC                = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-gcc
QMAKE_CXX               = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK              = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-g++


# modifications to linux.conf
QMAKE_AR                = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP             = /usr/local/arm-2011.03/bin/arm-none-linux-gnueabi-strip


load(qt_config)




2、为了防止出现某些指令找不到的错误,例如no such instruction SWPB等指令错误,将/mkspecs/common/g++-unix.conf进行修改,将编译优化置为0,这样就可以避免了。注意-O0第一个是字母,第二个是数字。你也可以设为O2试试,据说也好使,像我这样设编译会很慢的。 
QMAKE_LFLAGS_RELEASE += -Wl,-O0   




3、进入qt-everywhere-opensource-src-4.8.5目录, 配置configure文件,具体如下(重新配置用 make confclean 先清除配置):


sudo ./configure -prefix /opt/qt-4.8.5-arm -embedded armv7 -xplatform qws/linux-arm-g++ -debug-and-release -shared -fast -qt-zlib -little-endian -opensource -host-little-endian -confirm-license -nomake demos -nomake examples -nomake tools -no-webkit -no-qt3support -no-opengl -qt-libtiff -qt-libmng -qt-sql-sqlite -no-qvfb -no-svg -no-multimedia -qt-sql-sqlite -no-pch -lrt


./configure -prefix /opt/qt-4.8.5-arm -embedded armv7 -xplatform qws/linux-arm-gnueabi-g++ -debug-and-release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-usb -no-glib -armfpa




4、 sudo make




5、sudo make install






二、x86 qt编译


1、tar -xvzf qt-everywhere-opensource-src-4.8.5.tar.gz


2、cd qt-everywhere-opensource-src-4.8.5


3、sudo ./configure -prefix /opt/qt-4.8.5-x86  (重新配置用 make confclean 先清除配置)


4、 sudo make


5、 sudo make install




在编译过程中出错,提示






g++: error: unrecognized command line option ‘-fuse-ld=gold’


解决方法:


这是Qt的一个bug:https://bugs.webkit.org/show_bug.cgi?id=89312
在装有gold linker的系统里,编译脚本会加入-fuse-ld=gold选项,但这个选项gcc是不支持的。解决办法是移除该选项,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold。


#    QMAKE_LFLAGS+=-fuse-ld=gold








在编译过程中出错,提示


Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/duliqun/qt- everywhere-opensource-src-4.8.5/mkspecs/linux-g++.


解决方法:
 
g++在/usr/X11R6/lib下,找不到libXext.so。其原因就在于需要安装libX11的开发包,在ubuntu/debian里包名都是libX11-dev根据以往的经验,在./configure前主动装好下面3个包:sudo apt-get install libX11-dev libXext-dev libXtst-dev

0 0
原创粉丝点击