银河麒麟+飞腾FTARM编译安装QT4.8.6版本
gnu编译器银河麒麟安装QT4.8.6版本
1. 主要思路银河麒麟当前版本为V4,不是⽤的V10。V4的版本是基于ubuntu16进⾏的开发。所以安装QT4.8.6需要参考ubuntu来安
装(这个是错误的,在绕过⼀⼤圈后发现这个错误原因,具体应该参考ARM编译QT4.8.6)。
2. ⾸先下载QT4.8.6的源码,推荐到下载地址后开迅雷下载。
3. 安装前准备,参考下⾯的连接,只⽤参考“步骤1、准备⼯作”即可(因为是ubuntu环境,这个是⾛弯路的原因)。
sudo apt-get install g++
sudo apt-get install libx11-dev libxext-dev libxtst-dev
4. 解压QT4.8.6的包。
tar -xzvf qt-everywhere-opensource-src-4.8.
后⾯的步骤就参考ARM情况下编译QT的步骤了。参考下⾯的链接。
5. 修改arm交叉编译器
cd qt-everywhere-opensource-src-4.8.6/mkspecs/linux-arm-gnueabi-g++
f
修改配置如下:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
TARGET_PLATFORM = unix
TEMPLATE = app
CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index
QT += core gui
QMAKE_INCREMENTAL_STYLE = sublib
include(../f)
include(../f)
include(../common/g++-f)
# modifications to g++.conf
QMAKE_CC = aarch64-linux-gnu-gcc
QMAKE_CXX = aarch64-linux-gnu-g++
QMAKE_LINK = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++
# modifications f
QMAKE_AR = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy
QMAKE_STRIP = aarch64-linux-gnu-strip
load(qt_config)
注意上⾯的环境可以在bash下输⼊看下是否存在相关编译器。
aarch64-linux-gnu-gcc
aarch64-linux-gnu-g++
aarch64-linux-gnu-ar
aarch64-linux-gnu-objcopy
aarch64-linux-gnu-strip
6.配置configure
-prefix
指定安装路径。默认的安装⽬录和平台相关,但是在configure时,可以通过-prefix选项指定安装⽬录,⽐如./configure -prefix
/usr/local/Qt-5.9。这样⼀来,在执⾏make install指令时,编译完成的bin、lib或者其他⼦⽬录就会拷贝到/usr/local/Qt-5.9/⽬录中。交叉编译选项:
-xplatform
选项指定了⽬标平台和编译时使⽤的编译器,Qt⽀持的平台和编译器都在qtbase/mkspecs⽬录中。⽐如,在Ubuntu Linux系统中,Qt能被多种编译器编译,⽐如clang和g++。如下所⽰,指定qtbase/mkspecs/linux-arm-gnueabi-g++平台进⾏编译,也和刚刚修改的⽂件相对应。
-opensource
Compile and link the Open-Source Edition of Qt.
所以configure命令如下:
./configure -prefix /usr/local/Qt-4.8.6 -xplatform linux-arm-gnueabi-g++ -opensource
7.make&make install
make会等⼀段时间
sudo make
make install很快
sudo make install
以上就可以正确的安装QT4.8.6了。
补充说明
1. 交叉编译。
交叉编译参考下⾯的⽂章。
因为⼀开始想的是⽤ubuntu的⽅法编译,但是忽略了底层是FT ARM架构。
2. 编译平台,注意两者却别。
linux-arm-gnueabi-g++
OABI中的O,表⽰“Old”,“Lagacy”,旧的,过时的,OABI就是旧的/⽼的ABI。
EABI中的E,表⽰“Embedded”,是⼀种新的ABI。
EABI有时候也叫做GNU EABI。
OABI和EABI都是专门针对ARM的CPU来说的。
3. 注意Make clean。编译失败后再次编译最好先make clean。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论