Ubuntu16.04主机安装基于ZYNQ的QT交叉编译库

2023-11-17

前言

所谓交叉编译,当前项目下,即在Linux主机上编译ZYNQ-arm-Linux系统的可执行文件,由于在ZYNQ上编译速度非常慢,影响编程效率,最好的办法是在Linux主机上调试代码并直接生成可以在ZYNQ板子上运行的可执行文件。术语上,Linux主机称为主机,ZYNQ板子称为目标机,两者之所以不同,是由于架构的问题。虽然两者操作系统一样,但是Linux主机是x86或者x32的,而ZYNQ的Linux是跑在arm内核上的,各自的编译器是不一样的,所使用的库也不一样。

Xilinx配置整合了交叉编译工具即arm-xilinx-Linux-gnueabi-系列,下面的资料民间链接第二条的第一步是该交叉编译链的安装,不过版本有点旧,个人一开始不懂也是安装的这个交叉编译链,但是,目前(2018/9/19),尝试去下载更新的交叉编译链,官网提供链接(GNU TOOL)下面没有找到,http://xilinx.wikidot.com/zynq-tools 该文所说,这个arm-xilinx-Linux-gnueabi是集成在SDK里面的,可以单独下载,然而并没有search到。但是尝试安装完整个VIVADO的SDK之后,在XIlinx/sdk/2016.4/gnu/arm/lin/bin里面可以看到已经生成了交叉编译工具。

基于vivado2016.4 SDK的交叉编译环境

在Linux主机上安装完vivado2016.4 SDK版本之后,可以在XIlinx/sdk/2016.4/gnu/arm/lin/bin里面找到交叉编译所需要的工具,那么可以直接把环境变量定位到这里就可以。
1、第一种方法
实际上,Xilinx早就给你想好了,安装好vivado的sdk之后,直接source 安装文件下的settings64.sh就可以了。

source /Music/Xilinx/SDK/2016.4/settings64.sh
arm-xilinx-linux-gnueabi-gcc -v  //测试一下,出现版本是4.9

第二种方法当没有看见
2、第二种方法
打开终端(ROOT)

gedit /etc/bash.bashrc

开头第二句添加如下

export ARCH=arm
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export PATH=/Music/Xilinx/SDK/2016.4/gnu/arm/lin/bin/:$PATH   

记得source /etc/bash.bashrc
个人把VIVADO安装在/Music下,所以前面路径部分按照自己安装位置修改。
修改完之后查看版本如下

arm-xilinx-linux-gnueabi-gcc -v

在这里插入图片描述
可以看到版本是4.9.2,比下面百度云盘提供的更新。可以编写一个helloworld测试一下这个交叉编译工具是否可以用,然后把生成的可执行文件移动到ZYNQ上看是否可以编译。

Ubuntu16.04实际上还有一个更加简单的方式,直接在命令行输入

sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install g++-arm-linux-gnueabihf

在usr/bin可以看到该编译器,交叉编译时,直接用(path路径里本来就配置了usr/bin)就是了。

主机Linux上安装vivado2016.4版本

1、在http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html 上找到
在这里插入图片描述
下载,个人试过上一个的Linux安装工具,实际上由于网络问题或者其他,总是会在中途中断,只有这个下载正常,而且可以迅雷下载,美滋滋~.~。
注意解压需要在LINUX下解压。如果在Windows下下载完毕,拷贝到Linux之后,在压缩包文件下执行

tar zxvf Xilinx_Vivado_SDK__2016.4_0124_1.tar.gz
sudo su
cd Xilinx_Vivado_SDK__2016.4_0124_1
./xsetup

个人基本要用到的都装上了。
哦对了,别忘了安装32位的编译库,ubuntu16.04的32位库如下

sudo apt-get install lib32ncurses5 ​
sudo apt-get install lib32z1

安装过程出现的yes or no全部yes。

qtcreator上添加基于ZYNQ的交叉编译工具

实际上,这个编译工具也可以作为qtcreator上作为编译ZYNQ的交叉编译工具。具体修改方法如下。
参考 https://blog.csdn.net/yaowangii/article/details/78552083

基本环境

主机:ubuntu16.04LTS 目标机:ZYNQ7000系列上,ARM-A9
QT库版本:4.8.5,qtcreator任意版本
曾经尝试使用5.4.2版本,由于某些问题,make失败

参考资料

官方:http://www.wiki.xilinx.com/Qt %26 Qwt Build Instructions (Qt 5.4.2%2C Qwt 6.1.2)
民间:https://www.cnblogs.com/bombe1013/p/3294303.html
https://www.cnblogs.com/bombe1013/p/3294301.html
资料下载:http://pan.baidu.com/share/link?shareid=3831914682&uk=1092766566

QT4.8.5安装过程

1、解压qt-everywhere-opensource-src-4.8.5.tar.gz到任意文件夹内
2、配置并指定编译安装目录为/opt/qt-4.8.5,配置过程出现提示输入o和yes
3、编译,安装。编译时间很长
4、修改环境变量,添加如下代码
5、保存文件之后source下

tar -xzvf qt-everywhere-opensource-src-4.8.5.tar.gz
cd qt-everywhere-opensource-src-4.8.5.tar
./configure -prefix /opt/qt-4.8.4
make
make install
gedit /etc/bash.bashrc
添加
	export PATH=/opt/qt-4.8.4/bin:$PATH
	export QTDIR=/opt/qt-4.8.4
	export MANPATH=QTDIR/man:MANPATH
	export LD_LIBRARY_PATH=QTDIR/lib:LD_LIBRARY_PATH

source /etc/bash.bashrc

安装qt-creator

sudo apt-get install qtcreator

QT4.8.5交叉编译库安装

1、建立几个环境变量

export ZYNQ_QT_BUILD=/opt/qt-arm/build
export ZYNQ_QT_INSTALL=/opt/qt-arm/install
export PATH=$ZYNQ_QT_INSTALL/bin:PATH

2、在opt内建立响应目录

cd /opt
mkdir qt-arm
cd qt-arm
mkdir build install

3、进入qt-everywhere-opensource-src-4.8.5.tar.gz文件夹内,解压文件到ZYNQ_QT_BUILD目录内

tar -xzvf qt-everywhere-opensource-src-4.8.5.tar.gz -C $ZYNQ_QT_BUILD

4、将从官网下载的qmake.conf拷贝到制定位置
比如在qmake.conf所在目录下,执行

cp qmake.conf $ZYNQ_QT_BUILD/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-gnueabi-g++/

起初文件名为qmake_4.7.3.conf,修改为qmake.conf后会覆盖原先路径下有的qmake.conf。
5、因为该配置文件基于Qt4.7,为编译Qt4.8,需要修改文件内容

gedit $ZYNQ_QT_BUILD/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf

在这里插入图片描述
将图中三行替换为

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

保存退出
6、配置参数

./configure \
       -embedded arm \
       -xplatform qws/linux-arm-gnueabi-g++ \
       -little-endian \
       -opensource \
       -host-little-endian \
       -confirm-license \
       -nomake demos \
       -nomake examples \
       -prefix $ZYNQ_QT_INSTALL

7、make和make install

make
make install

时间很长,静侯。
8、将Xilinx交叉编译库中的内容复制到Qt库中,输入命令

cp -P /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* $ZYNQ_QT_INSTALL/lib

这样就完成了交叉编译库的安装。这里的“Xilinx交叉编译库”参考开头链接中的安装介绍

制作QT库镜像

该镜像可以移植到ZYNQ上

cd $ZYNQ_QT_BUILD
dd if=/dev/zero of=qt_lib.img bs=1M count=90   // qt-4.8.5需要90M大小作为镜像大小,根据需要可以改变count
mkfs.ext2 -F qt_lib.img
chmod go+w qt_lib.img
mount qt_lib.img -o loop /mnt
cp -rf $ZYNQ_QT_INSTALL/* /mnt
chmod go-w qt_lib.img
umount /mnt

这个qt_lib.img就是我们所需的运行库了。
接下来的任务就是如何挂载这个镜像。利用Qt编写一个project。导入如下环境变量:

export ZYNQ_QT_INSTALL=/opt/Qt-arm/install
export PATH=$ZYNQ_QT_INSTALL/bin:PATH

进入project内输入如下命令

qmake -project
qmake

此时会生成Makefile文件,再输入make编译生成Arm Version的可执行文件。可以使用file命令查看。
将该工程以及qt_lib.img拷贝到SD卡的FAT格式分区下。
把SD卡插回ZYNQ开发板,通电。进入桌面后,启动终端。
在对应的ZYNQ_QT_INSTALL目录下建立相应的目录,我自己而言

cd /opt/
mkdir Qt-arm
cd Qt-arm
mkdir install

将qt_lib.img挂载。

mount /dev/mmcblk0p1 /mnt(可以使用ls /dev查看SD卡分区)
mount /mnt/qt_lib.img /opt/Qt-arm/install

运行SD卡中的文件

/mnt/PROJECTPATH/app -qws

即可成功运行

普通交叉编译arm-linux工具
https://pan.baidu.com/s/1pJ2rdkZ
实际上,采用Xilinx 的交叉编译器,编译qt5库以上总是失败。后来更换交叉编译工具并直接指定绝对路径(在qmake.conf里面修改交叉编译工具及其对应的路径),config参数只有如下

./configure -release -opensource -xplatform arm-xilinx-linux-gnueabi-g++ -prefix /opt/qt-arm-5.4.2 -no-opengl

最终qt5的库大部分编译通过并可以使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu16.04主机安装基于ZYNQ的QT交叉编译库 的相关文章

随机推荐

  • 【满分】【华为OD机试真题2023 JAVA&JS】取出尽量少的球

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 取出尽量少的球 时间限制 1s 空间限制 32MB 限定语言 不限 题目描述 某部门开展Family Day开放日活动 其中有个从桶里取球的游戏 游戏规则如下 有N个容量一样的小
  • vue 中 的scroll插件vuescroll

    vuescroll 官网 https vuescrolljs yvescoding org zh guide configuration html detectresize 主要配置如下 在data里面 ops vuescroll mode
  • angular 根据当前日期显示本周,上周,本月,上月,本季度,本年度时间段

    angular Date处理模块 根据当前日期获取本周 上周 本月 上月等时间段 知识准备 Date对应方法 getDate 返回月中的第几天 从 1 到 31 getDay 返回星期几 0 6 setDate day 设置 Date 对象
  • 【c语言】malloc函数详解

    谈到malloc函数相信学过c语言的人都很熟悉 但是malloc底层到底做了什么又有多少人知道 1 关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果 也可以这样认为 window下 原型 ext
  • 关于多线程与CPU时间片

    几个知识点 进程是操作系统分配资源的基本单位 很明显在 proc pid目录下你可以看到每一个进程的详细信息 资源情况 但是你却找不到线程的资源信息 那是因为线程是共享了进程的资源 线程是操作系统调度的基本单位 我们打开top命令看到的 t
  • 创建Vue脚手架&分析脚手架结构

    一 初始化脚手架 1 1 说明 1 Vue 脚手架是 Vue 官方提供的标准化开发工具 开发平台 2 最新的版本是 4 x 3 文档 Vue CLI 1 2 具体步骤 第一步 仅第一次执行 全局安装 vue cli npm install
  • iostat 命令

    iostat 命令主要通过观察物理磁盘的活动时间以及他们的平均传输速度 监控系统输入 输出设备负载 根据 iostat 命令产生的报告 用户可确定一个系统配置是否平衡 并据此在物理磁盘与适配器之间更好地平衡输入 输出负载 iostat 工具
  • CocosCreator TypeScript使用protobuf

    开发环境 Mac环境 CocosCreator TypeScript 使用protobuf 准备工作 1 CocosCreator 2 WebStorm VSCode 3 安装node js 4 下载protobufjs6 8 6 命令行安
  • CRC-模2除法

    在循环冗余校验码 CRC 的计算中有应用到模2除法 模2除法的特点就是 每一位除的结果不影响其它位 即不向上一位借位 模2除法原则 1 被除数的首位为1 商为1 2 被除数的首位为0 商为0 3 模2除法等同于按位异或 要保证每次除完首位都
  • 快排代码实现

    快排代码实现如下 快排练习 author Eleven version v1 0 date 2021 2021 10 6 19 52 public class FastSortExer public static void main Str
  • Unity动画系统详解3:如何播放、切换动画?

    摘要 长文预警 建议先收藏 有了模型和多个动画以后 在Unity中如何控制它们的播放和切换呢 本文带你一站式解析Unity的Animator模块 洪流学堂 让你快人几步 你好 我是跟着大智学Unity的萌新 我叫小新 这几周一起来复 yu
  • 基于Pytorch的神经网络部分自定义设计

    一 基础概念 学习笔记 1 训练误差和泛化误差 1 本质上 优化和深度学习的目标是根本不同的 前者主要关注的是最小化目标 后者则关注在给定有限数据量的情况下寻找合适的模型 训练误差和泛化误差通常不同 由于优化算法的目标函数通常是基于训练数据
  • 世界上最难的视觉图_世界上最长的蛇有多长?四川惊现55米洪荒巨蟒(图)

    蛇 一直是站在食物链顶端的致命生物 蟒蛇更是能够吞食人类的恐怖巨兽 网传世界上最长的蛇有500米之长 名为 红海巨蛇 已被证实为虚假传言 以地球现在的环境是不可能出现如此之大的蛇的 据说四川发现了罕见的55米长的巨蟒 堪称世界上最长的蛇 是
  • QT QWebView/QWebEngineView使用

    一 简介 使用QT程序可以访问web页面 但在不同QT版本中使用的类和方法不同 1 Qt4中使用webkit模块 2 Qt5 Qt5 5使用webkitwidgets模块 3 Qt5 6以上版本使用webenginewidgets模块 所以
  • 【Jmeter】生成html格式接口自动化测试报告

    jmeter自带执行结果查看的插件 但是需要在jmeter工具中才能查看 如果要向领导提交测试结果 不够方便直观 笔者刚做了这方面的尝试 总结出来分享给大家 这里需要用到ant来执行测试用例并生成HTML格式测试报告 一 ant下载安装 1
  • Error failed to bundle project: error running light.exe报错解决方法

    Error failed to bundle project error running light exe error running light exe failed to run C Users admin AppData Local
  • 利用VNC远程连接Ubuntu server(图形界面)

    有时会需要远程连上ubuntu server图形界面控制调试 这时VNC就是一个挺好的工具 windows 上安装 vnc viewer ubuntu server 上安装vnc server 进行连接即可 一 ubuntu 安装vnc s
  • 如何在CMD下运用管理员权限

    方法一 鼠标右键 这个方法比较比较普通 点开开始找到cmd 右击鼠标 以管理员身份运行 A 这样调用就是管理员的权限 方法二 快捷模式 在点开win R后 选择 以管理员身份运行 然后确定 可以这还是会调出UAC的提示界面 选择 是 即可
  • 【动态系统的建模与分析】二阶系统的单位阶跃响应-笔记

    1 数学推导 上节说到 定义系统输入输出 方程变为 考虑 从传递函数入手分析 求解它的传递函数 即laplace两边 即 得 传递函数为 框图为 极点 所以 则 因为B和C共轭 因此 Laplace逆变换 得 其中 则 其他情况可以自行分析
  • Ubuntu16.04主机安装基于ZYNQ的QT交叉编译库

    Ubuntu16 04主机尝试安装基于ZYNQ的QT交叉编译库 前言 基于vivado2016 4 SDK的交叉编译环境 主机Linux上安装vivado2016 4版本 qtcreator上添加基于ZYNQ的交叉编译工具 基本环境 参考资