草庐IT

ubuntu20.04搭建arm交叉编译环境

我是huhu 2024-06-12 原文

1.下载arm交叉编译程序

要根据目标系统选择编译器版本,我的主板:

aarch64bit体系结构(arm 64bit),linux内核GNU操作系统=GNU/Linux操作系统(简称linux)

大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中。

小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。

经过网上分享的代码测试发现我的是小端。

(在我对操作系统及内核不了解的情况下写的是arm64位小端

所以选择图中位置

(aarch64-none-linux-gnu):arm64位 linux裸机

(aarch64-none-linux-gnu):arm64位 linux小端

(aarch64_be-none-linux-gnu):arm64位 linux大端

​​

  •  解压文件
tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
  • 拷贝文件到合适的位置(我的位置: /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu)
  • 目录内容如下

​​

 该内容用于配置qt内部的qmake.conf文件

​2.编译arm的qt项目源码

tar -xvf qt-everywhere-src-5.12.12.tar.xz 
  • 拷贝文件到合适的位置(我的位置:/home/huhu/third_part/qt-everywhere-src-5.12.12    /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu)
  • 进入/home/huhu/third_part/qt-everywhere-src-5.12.12/qtbase/mkspecs目录下找到linux-aarch64-gnu-g++ 拷贝到linux-none-aarch64-gnu-g++:
cp -r linux-aarch64-gnu-g++ linux-none-aarch64-gnu-g++
  • 进入拷贝后的linux-none-aarch64-gnu-g++文件夹编辑qmake.conf文件结果如下:
#
# qmake configuration for building with aarch64-none-linux-gnu-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

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

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

# modifications to linux.conf
QMAKE_AR                = aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-none-linux-gnu-objcopy
QMAKE_NM                = aarch64-none-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-none-linux-gnu-strip
load(qt_config)

以上内容取决于交叉编译软件( /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin)文件夹下程序名

  • 创建编译输出文件夹,并增加权限
mkdir arm-qt
chmod +x arm-qt/
  • 执行configure生成Makefile文件,命令如下:
./configure -opensource -prefix /home/huhu/third_part/qt-everywhere-src-5.12.12/arm-qt -xplatform linux-none-aarch64-gnu-g++ -release -no-cups -qt-zlib -qt-libjpeg -qt-libpng  -no-openssl -no-pch -confirm-license -no-opengl

-prefix :编译完成文件输出目录

-xplatform:编译平台(/home/huhu/third_part/qt-everywhere-src-5.12.12/qtbase/mkspecs目录下新修改的qmake.conf所在的文件夹名称)

 看到下图内容表示Makefile文件生成成功

  • 执行编译:
  • make
  • make install

3.qt安装与qtcreator交叉编译配置:

sudo chmod 777 qt-opensource-linux-x64-5.14.1.run
  • 执行安装
./qt-opensource-linux-x64-5.14.1.run

安装过程参考:嵌入式Linux下的Qt Creator环境搭建_安迪西的博客-CSDN博客_qt creator linux

我构建成功的文件名为button_test,在路径/home/huhu/third_part/qt_project/build-button_test-arm_linux-Debug下

 4. 测试

启动arm主板,使用ifconfig获得主板ip地址,使用scp 将构建好的项目发送到arm主板上

scp 要传输的文件地址 用户名@ip地址:目标地址

scp ./button_test huhuarm@192.168.2.10:/home/huhuarm/Desktop/

传输成功后在arm上双击button_test文件运行,完成


问题1:

​​

 解决办法:安装build 的组件
sudo apt-get install build-essential

问题2:

​​

 因为我没有编译opengl模块,所以编译命令增加-no-opengl 参数

问题6:

原因是ubuntu20.04默认安装了python3,所以需要给python创建一个软连接到python,这样命令行使用python才能成功调用到python3

sudo ln -s /usr/bin/python3 /usr/bin/python

有关ubuntu20.04搭建arm交叉编译环境的更多相关文章

  1. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  2. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  5. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby - ri 有空文件 – Ubuntu 11.10, Ruby 1.9 - 2

    我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da

  8. ruby - 在 Ubuntu 14.04 中使用 Curl 安装 RVM 时出错 - 2

    我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack

  9. .net - 是否有 Ruby .NET 编译器? - 2

    是否有适用于Ruby语言的.NETFramework编译器?我听说过DLR(动态语言运行时),这是否将使Ruby能够用于.NET开发? 最佳答案 IronRuby是Microsoft支持的项目,建立在动态语言运行时之上。 关于.net-是否有Ruby.NET编译器?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/199638/

  10. ruby - rails 3.2.2(或 3.2.1)+ Postgresql 9.1.3 + Ubuntu 11.10 连接错误 - 2

    我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat

随机推荐