虚拟机环境(Ubuntu 12.04-64bit)
1、解压源码
tar zxvf qt-everywhere-opensource-src-4.8.6.tar.gz
2、进入源码包
cd qt-everywhere-opensource-src-4.8.6
3、配置交叉编译文件
cd mkspecs/qws/
cp -rf linux-arm-g++/ linux-3520d-g++
vi linux-3520d-g++/qmake.conf
4、修改后的linux-3520d-g++/qmake.conf 文件内容
#
# qmake configuration for building with arm-linux-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 = arm-hisiv100nptl-linux-gcc
QMAKE_CXX = arm-hisiv100nptl-linux-g++
QMAKE_LINK = arm-hisiv100nptl-linux-g++
QMAKE_LINK_SHLIB = arm-hisiv100nptl-linux-g++
# modifications to linux.conf
QMAKE_AR = arm-hisiv100nptl-linux-ar cqs
QMAKE_OBJCOPY = arm-hisiv100nptl-linux-objcopy
QMAKE_STRIP = arm-hisiv100nptl-linux-strip
load(qt_config)
5、创建安装目录
mkdir /opt/Qt4.8.6-hi3520
6、配置安装目录、指令编译器以及裁剪QT (支持webkit )
./configure --prefix=/opt/Qt4.8.6-hi3520 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-3520d-g++ -little-endian -qt-freetype -no-opengl -no-glib -nomake demos -nomake examples -nomake docs -nomake toomakels
7、解决编译问题
undefined reference to ‘accept4’
vi mkspecs/qws/qplatformdefs.h
//在文件中增加下面语句
#undef O_CLOEXEC
8、解决编译问题
(1)、undefined reference to ‘__sync_sub_and_fetch_4’
(2)、skipping incompatible liblinux-atomic.a when searching for -llinux-atomic
(a)使用libtool制作gcc linux-atomic.c链接库
cd gcc-4.6.0/gcc/config/arm/
vi linux-atomic.c
//修改 38 行的 属性 hidden 为 default
//改变平台编译器的AR和Randlib 软链接
$sudo rm /usr/bin/ar && sudo ln -s /opt/hisi-linux-nptl/arm-hisiv100-linux/bin/arm-hisiv100-linux-uclibcgnueabi-ar /usr/bin/ar
$sudo rm /usr/bin/ranlib && sudo ln -s /opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux-ranlib /usr/bin/ranlib
(b)编写编译脚本
#!/bin/bash
AR="arm-hisiv100nptl-linux-ar"
RANLIB="arm-hisiv100nptl-linux-ranlib"
CC="arm-hisiv100nptl-linux-gcc"
libtool --tag=CC --mode=compile arm-hisiv100nptl-linux-gcc -g -O2 -MT linux-atomic.lo -MD -MP -MF linux-atomic.Tpo -c -o linux-atomic.lo linux-atomic.c
libtool --tag=CC --mode=link arm-hisiv100nptl-linux-g++ -g -O2 -o liblinux-atomic.la linux-atomic.lo
//将生成的链接文件(.lib/linux-atomic.a等)打包到本地目录
//文件格式 :ELF 32-bit LSB relocatable, ARM
tar czvf lib.tar.gz .libs/
//还原平台编译器的AR和Randlib 软链接
$sudo rm /usr/bin/ar && sudo ln -s/usr/bin/x86_64-linux-gnu-ar /usr/bin/ar
$sudo rm /usr/bin/ranlib && sudo ln -s /usr/bin/x86_64-linux-gnu-ranlib /usr/bin/ranlib
(c)重新编写编译脚本
#!/bin/bash
AR="ar"
RANLIB="ranlib"
CC="gcc"
libtool --tag=CC --mode=compile gcc -g -O2 -MT linux-atomic.lo -MD -MP -MF linux-atomic.Tpo -c -o linux-atomic.lo linux-atomic.c
libtool --tag=CC --mode=link g++ -g -O2 -o liblinux-atomic.la linux-atomic.lo
//库文件文件格式 :ELF 64-bit LSB relocatable, x86-64
cd qt-everywhere-opensource-src-4.8.6
./configure --prefix=/opt/Qt4.8.6-hi3520 -opensource -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -xplatform qws/linux-3520d-g++ -little-endian -qt-freetype -no-opengl -no-glib -nomake demos -nomake examples -nomake docs -nomake toomakels -llinux-atomic -L/home/vmuser/src/gcc-4.6.0/gcc/config/arm/.libs
(d)通过configure 配置之后,把之前制作的atomic库解包再进行make编译
tar zxvf lib.tar.gz
cd qt-everywhere-opensource-src-4.8.6
make -j4
make install
[附件]:
gcc-4.6.0源码:
https://download.csdn.net/download/u011539437/12517988
gcc-4.6.0修改后的源码:
https://download.csdn.net/download/u011539437/12531865
qt-4.8.6修改后的源码:
https://download.csdn.net/download/u011539437/12531903
qt-4.8.6编译好的安装文件包:
https://download.csdn.net/download/u011539437/12532427