【海思Hi3520D开发笔记】QT4.8.6移植到hi3520d,增加Webkit插件编译

虚拟机环境(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编译

扫描二维码关注公众号,回复: 11313689 查看本文章
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

猜你喜欢

转载自blog.csdn.net/u011539437/article/details/106709929