搭建海思3559A-Qt4.8.7+Openssl开发环境

1.软件版本

linux版本:ubuntu 16.04 LTS

Qt:4.8.7

Openssl:1.0.1q

2.安装交叉编译器

①在ubuntu上解压 tar -zxf aarch64-himix100-linux.tgz

②进入解压后的文件夹中,增加执行权限sudo chmod +x aarch64-himix100-linux.install

③执行 ./aarch64-himix100-linux.install

④执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。

3.编译openssl

①解压openssl1.0.1q.tar.gz

扫描二维码关注公众号,回复: 11354518 查看本文章

②进入解压后的文件夹执行命名  ./config no-asm no-async shared --prefix=/home/admin/openssl-arm/ --cross-compile-prefix=aarch64-himix100-linux-

③make

④make install

no-asm 在交叉编译过程中不使用汇编代码代码加速编译过程

no-async 没有提供GNU C的ucontext库,避免报错

shared 生成静态链接库

--prefix 指定生成lib include bin目录的路径,不修改此项则默认为OPENSSLDIR目录

这里建议将安装目录放在home目录下。

如果编译报错,并提示"m64"字样报错信息,多半是交叉编译器不支持m64选项。解决办法:修改Makefile ,直接删除 -m64 字段。

4.编译Qt4.8.7 

①下载qt-everywhere-opensource-src-4.8.7.tar.gz文件

②解压后进入目录,进入到mkspecs/qws目录下,拷贝linux-generic-g++整个文件夹,并更名为aarch64-himix100-linux-g++

③进入文件夹aarch64-himix100-linux-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)

#--ema add--
QT_QPA_DEFAULT_PLATFORM = linuxfb
#QMAKE_CFLAGS_RELEASE += -march=ARMv8-A -mcpu=cortex-a73.cortex-a53 -std=c++0x
#QMAKE_CXXFLAGS_RELEASE += -march=ARMv8-A -mcpu=cortex-a73.cortex-a53 -std=c++0x

QMAKE_CXXFLAGS += -std=gnu++98
QMAKE_CFLAGS += -std=gnu++98

# modifications to g++.conf
QMAKE_CC                = aarch64-himix100-linux-gcc
QMAKE_CXX               = aarch64-himix100-linux-g++
QMAKE_LINK              = aarch64-himix100-linux-g++
QMAKE_LINK_SHLIB        = aarch64-himix100-linux-g++

# modifications to linux.conf
QMAKE_AR                = aarch64-himix100-linux-ar cqs
QMAKE_OBJCOPY           = aarch64-himix100-linux-objcopy
QMAKE_STRIP             = aarch64-himix100-linux-strip
QMAKE_NM                = aarch64-himix100-linux-nm # ema add 


load(qt_config)

④返回到qt-everywhere-opensource-src-4.8.7目录下,建立shell脚本生成makefile,qt.sh,内容如下

#! /bin/sh

./configure \
-v \
-prefix /home/admin/Qt-4.8.7-arm \
-release \
-opensource \
-shared \
-no-fast \
-largefile \
-no-system-proxies \
-exceptions \
-accessibility \
-stl \
-no-sql-db2 \
-no-sql-ibase \
-no-sql-mysql \
-no-sql-oci \
-no-sql-odbc \
-no-sql-psql \
-no-sql-sqlite \
-no-sql-sqlite2 \
-no-sql-sqlite_symbian \
-no-sql-symsql \
-no-sql-tds \
-no-qt3support \
-no-xmlpatterns \
-multimedia \
-audio-backend \
-phonon-backend \
-no-svg \
-no-webkit \
-no-javascript-jit \
-script \
-no-scripttools \
-declarative \
-declarative-debug \
-no-mmx \
-no-3dnow \
-no-sse \
-no-sse2 \
-no-sse3 \
-no-ssse3 \
-no-sse4.1 \
-no-sse4.2 \
-no-avx \
-no-neon \
-qt-zlib \
-no-gif \
-qt-libtiff \
-qt-libpng \
-no-libmng \
-qt-libjpeg \
-openssl-linked \
-I /home/admin/openssl-arm/include \
-L /home/admin/openssl-arm/lib \
-make libs \
-make translations \
-nomake demos \
-nomake tools \
-nomake examples \
-nomake docs \
-no-rpath \
-no-cups \
-no-iconv \
-no-dbus \
-embedded cortex-a73.cortex-a53 \
-xplatform qws/aarch64-himix100-linux-g++ \
-qt-freetype \
-no-opengl \
-no-openvg \
-no-sm \
-no-glib \
-qvfb \
-qt-sql-sqlite \
-qt-gfx-linuxfb \
-plugin-sql-sqlit

⑤执行shell脚本 sh qt.sh生成makefile

⑥make

⑦make install

如果顺利的话,基本上环境就已经编译完成了。

问题一:64位Ubuntu无法安装 lib32stdc++6

sudo apt install lib32z1-dev

问题二:在使用Qt编译程序时,找不到库文件

在make install之后,进入到install后的目录下的 bin目录,touch qt.conf,内容如下

[Paths]

Prefix = ..

在bin目录执行 ./qmake -query使环境变量生效

5.配置QtCreator

①打开 qtcreator 开发环境

②在菜单中选择 Tools ==> Options,在弹出的对话框中,选择 Build & Run

③选择标签 Compilers,按下图设置,选择 C 交叉编译器,如下图所示:

④ 切换到 Qt Versions 标签,点击“Add”按钮,选择 qmake,如下图所示:

⑤ 切换到 Kits 标签,点击“Add”按钮,然后设置如下图所示:

备注 1:需要按照上面的步骤,先 Compilers,再 Qt Versions,最后 Kits,否则可能添加不成功。
备注 2:Qt 环境构建成功后,通常会在上图所示显示一黄色的小的 三角符+感叹号 。

6.准备板端Qt运行环境

① 拷贝 Qt 可执行文件到板子 /root 目录

② 拷贝 Qt 库、字体插件等到文件夹 qt_lib (文件夹名字可以自行创建)

③拷贝 qt_lib 文件夹到板子 /lib 目录下

④设置 Qt 运行环境,如下:

#! /bin/sh
export QT_QWS_FONTDIR=/lib/qt_lib/fonts
export QT_PLUGIN_PATH=/lib/qt_lib/plugins
export QT_QWS_DISPLAY=linuxFB:/dev/fb0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib/qt_lib
echo " Start Ema_Qt_Demo ! "
./Ema_Qt_Demo -qws

 程序跑起来之后,此时 Qt 上并没有通过 HDMI 输出显示在显示器上

7.修改 SDK_HIFB 例程

进入海思SDK目录

提示:需要修改该路径文件:sdk_path/../mpp/sample/hifb/sample_hifb.c

① 改成非压缩模式

②加一个 while 循环

③ 设置背景颜色

④ 设置 HDMI 输出

⑤重新编译 sample_hifb.c,拷贝可执行程序(sample_hifb)和固件(res)到板子上

⑥执行 ./sample_hifb 5 0 0&  再执行./Ema_Qt_Demo -qws 成功显示界面。

8.使用到相关软件 

Xshell5:用来连接开发板,进入到开发板。

nfs server服务端:如果开发板内存小,可以使用nfs 挂载目录。(安装在ubuntu上)

1.安装nfs server端应用

sudo apt-get update sudo apt-get install -y nfs-kernel-server

2.配置nfs

cd ~ mkdir nfs sudo vi /etc/exports

/home/erick/nfs *(rw,sync,no_root_squash,no_subtree_check) [/home/erick/nfs 替换为自己的路径]

3.重启服务

sudo /etc/init.d/rpcbind restart sudo /etc/init.d/nfs-kernel-server restart

参考链接:https://www.jianshu.com/p/5314f90330a6

猜你喜欢

转载自blog.csdn.net/wzz953200463/article/details/106922693