对于没有做过嵌入式编程的人, 可能不太理解交叉编译的概念, 那么什么是交叉编译?它有什么作用?
从 arm-linux-gnu-gcc -v 中看到 sysroot目录 /usr/arm-linux-gnu/sys-root/ 为空。 从 yum search 中,也没找到对应的包。看来只能手工去下载编译用的head文件和库文件。
The GNU Compiler Collection,通常简称GCC,是一套由GNU开发的编译器集,为什么是编辑器集而不是编译器呢?那是因为它不仅支持C语言编译,还支持C++, Ada, Objective C等许多语言。另外GCC对硬件平台的支持,可以所无所不在,它不仅支持X86处理器架构, 还支持ARM, Motorola 68000, Motorola 8800, Atmel AVR, MIPS等处理器架构。
本章节将讲解如何使用电脑(上位机)交叉编译一个打印 hello word 的小应用,并将其push到开发板(下位机)上运行起来,打印出 hello word。这是嵌入式应用开发的最基础步骤。在此之前,你需要具备嵌入式编程的基本知识,如下。
该文介绍了交叉编译工具链的使用,包括arm-linux-gnueabi-gcc、arm-linux-gnueabihf-gcc、arm-none-eabi-gcc、arm-none-linux-gnueabi-gcc、arm-none-linux-gnueabihf-gcc、qoriq-elf-gcc等工具的使用方法。
什么是跨平台交叉编译 交叉编译 通俗地讲就是在一种平台上编译出其他几个平台能够运行的程序(通常指系统和CPU架构的不同) 交叉编译通常使用在分发时,编译出多个平台可用的二进制程序,比如在Linux下编译出可以在Win下可以使用的EXE程序。 本地编译 本地编译是指当前系统所配置编译器根据当前系统配置编译出在当前系统所适用的执行程序(部分其他语言本地编译时可能会由于扩展包含的问题,无法在同平台其他机器运行)。 所以如果要生成在非本机的其他平台和系统的程序,就需要用到交叉编译(交叉编译工具链)。 交叉编译工具链
作者 | Motiejus Jakštys 译者 | 平川 策划 | 罗燕珊 本文最初发布于 Motiejus Jakštys 的个人博客。 免责声明:我在 Uber 工作,我的一部分职责是将 zig cc 引入公司。但这篇文章是我的观点,与 Uber 无关。 我日前在 Zig 的一场交流会上作了题为“Uber 引入 Zig”的 演讲。本文从技术和社交两方面简单介绍了“Uber 是如何使用 Zig 的”,而主要的篇幅是介绍“我把 Zig 带到 Uber 的经验”。 本文要点: Uber 使用
交叉编译器是在PC上运行的编译器,但是编译后得到的二进制程序却不能在PC 上运行,而只能在开发板上运行。交叉编译器命名方式一般遵循“处理器-系统-gcc”这样的 规则,一般通过名称便可以知道交叉编译器的功能。
最近研究了一下ARM的交叉编译环境搭建,太麻烦了必须作一下记录啊。 前两个方法比较简单一点,关键是淫家Google帮你弄好了大部分功能
V853 是一颗面向智能视觉领域推出的新一代高性能、低功耗的处理器SOC,可广泛用于智能门锁、智能考勤门禁、网络摄像头、行车记录仪、智能台灯等智能化升级相关行业。V853 集成Arm Cortex-A7和RISC-V E907 双CPU,内置最大 1T 算力 NPU,使用全志自研 Smart 视频引擎,最大支持5M@25fps H.265编码和5M@25fps H.264编解码,同时集成高性能 ISP 图像处理器,可为客户提供专业级图像质量。V853 还支持 16-bit DDR3/DDR3L,满足各类产品高带宽需求;支持 4lane MIPI-CSI/DVP/MIPI-DSI/RGB 等丰富的专用视频输入输出接口,满足各类AI视觉产品需求;采用先进的22nm工艺,具有更优的功耗和更小的芯片面积。
2021 年 11 月,我们决定评估 arm64 架构在 Uber 的可行性。我们的大多数服务是用 Go 或 Java 编写的,但我们的构建系统只能编译成 x86_64。现在,得益于开源合作,Uber 拥有了一个独立于系统的构建工具链,可以无缝地支持多种架构。我们使用这个工具链来引导 arm64 主机。本文将分享我们是如何着手去做这件事情的,以及我们早期的想法、遇到的问题、达成的一些成就和未来的方向。
最近在学习riscv64架构的一些知识,并且利用做一些项目的机会去了解更多的不同种类的的芯片的架构设计。学习riscv的好处在于其架构是开源的,也就是任何人只要有兴趣和时间都可以利用开源的代码在fpga设计出一款自己的CPU出来,我觉得这是一个深入芯片底层设计的很好的机会。从上层到底层,从知其然到知其所以然,这必将是一个循序渐进的过程,本文梳理了一下riscv上的环境搭建方法(ubuntu18.04),让系统在qemu上正常的运行起来。
centos7 64位 搭建arm交叉编译环境 1、下载交叉编译工具链 wget http://kan.027cgb.com/587712/gcc-linaro-arm-linux-gnueabihf-4-9-2014-07_linux-tar.xz 2、解压 解压到/opt目录下 xz -d gcc-linaro-arm-linux-gnueabihf-4-9-2014-07_linux-tar.xz tar -xvf gcc-linaro-arm-linux-gnueabihf-4-9-20
看到很多人在小哪吒上编译Opencv,自己也尝试过编译了几次,各位开发者在编译的时候都可能会遇到不同的问题,现将其整理出来方便后面新来的开发者查阅。
前言 咱们知道android设备可以直接运行apk应用,或者使用dalvikvm指令运行dex文件中的程序, 但是这两者本质上使用的语言都是java或者smali, 如果需要执行C语言程序,需要借助N
指的是依托君正T31芯片平台的资源,利用君正linux系统提供的API进行操作硬件的过程。
Qt 是一个跨平台的应用程序开发框架。使用Qt开发的应用程序,只需要编写一套代码,然后把这套代码放在不同平台的Qt环境去编译,就会生成可以运行在对应平台的应用程序。例如,我在Windows写了一个串口助手,这套代码不用修改,放在Linux环境下的Qt开发环境,重新编译,就可以生成可以在Linux环境下运行的串口助手,当然,Qt支持的环境有很多。不同平台下的移植,只需要修改很小一部分或者不用修改就可以直接运行。
他这个编译器安装比较简单,直接运行这个脚本即可:默认安装到opt下面,我这个是安装过一次了,所以会提示是否覆盖。
Toochain即交叉编译工具链,是Linux Host机上用来编译和调试嵌入式设备程序的一系列工具的集合。ISVP中的Toolchain版本信息如下:
方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc。 此方法安装的是最新版的,但是此方法需要翻墙,否则99%会失败,这就是为什么网上大多都用压缩包安装的原因: 首先Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:
这篇文章主要介绍了交叉编译的实现,包括环境部署,并简单测试交叉编译环境是否安装成功。
主 机:VMWare–ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2
视频流媒体服务器EasyNVR系统不拘泥、不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC、硬盘录像机NVR、且设备支持标准的RTSP/Onvif协议,都可以接入并播放视频。
有些情况下,虚拟机安装完毕,使用一段时间root密码失效,这时无法登陆,可以使用如下步骤清除密码:
上篇文章介绍了STM32MP157D-DK1开发板Qt镜像的构建,通过在Ubuntu中重新编译带有Qt功能的系统来实现。
在si里搜索上图出现的”S3C2410 flash partition”字段,找到位于common-smdk.c中,里面有个数组smdk_default_nand_part[],内容如下所示:
详细参考https://www.cnblogs.com/xcloudbiz/articles/5144970.html
本文介绍了如何编译配置busybox并制作一个最小的根文件系统,包括编译配置、安装过程以及根文件系统的构建方法。
本文介绍了如何编译配置busybox,并将其安装到嵌入式Linux系统中。首先介绍了编译配置和安装busybox的步骤,然后通过实例详细说明了编译配置和安装的过程。最后,总结了如何将busybox安装到指定目录以及其后的根文件系统的构建过程。
# arm-linux-gcc hello.c -o tt /home/gl/usr/local/arm/4.3.2/bin/arm-linux-gcc: /home/gl/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录 /home/gl/usr/local/arm/4.3.2/bin/arm-linux-gcc:行3: /home/gl/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc: 成功 [root@austgl gl]# yum install ld-linux.so.2 已加载插件:langpacks, presto, refresh-packagekit 解决依赖关系 --> 执行事务检查 ---> 软件包 glibc.i686.0.2.16-28.fc18 将被 安装 --> 处理依赖关系 libfreebl3.so(NSSRAWHASH_3.12.3),它被软件包 glibc-2.16-28.fc18.i686 需要 --> 处理依赖关系 libfreebl3.so,它被软件包 glibc-2.16-28.fc18.i686 需要 --> 执行事务检查 ---> 软件包 nss-softokn-freebl.i686.0.3.14.3-1.fc18 将被 安装 --> 完成依赖关系计算 ^[^A 依赖关系解决
(前段时间在做嵌入式的课程设计,特将学习心得整理如下) 一、开发工具及环境介绍 1、ARM处理器 ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。 ARM处理器特点: 体积小、低功耗、低成本、高性能; 支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 大量使用寄存器,指令执行速度更快; 大多数数据操作都在寄存器中完成; 寻址方式灵活简单,执行效率高; 指令长度固定。 2、交叉编译环境 2.1、交叉编译 交叉编译(cross-co
嵌入式系统三大部分:bootloader(uboot)、Linux内核、根文件系统。
最近零碎的事太多了,拖了好久没写blog。一些小的碎片话的东西也不值得写,另一方面是这次大幅优化了 atframework 的一些流程细节,特别是针对我们这两年来业务的需求,对 libatbus 进行了一次大重构。这里记录一下重构的内容吧。
提示错误: arm-linux-gcc:Command not found PATH里有/usr/oca/arm/bin,但是make的时候,就是找不到 arm-linux-gcc 原因: export PATH=$PATH:/usr/local/arm/bin是设置当前用户的PATH,而sudo执行make的时候,使用的是超级用户权限,那也就使用了超级用户的PATH(但是这个PATH里,并没有/usr/ local/arm/bin)
TSINGSEE青犀视频的Easy系列视频平台,对外提供Windows与Linux版本,如果用户有需求,我们也可以进行编译,提供ARM版。今天我们来分享一下EasyNVR的ARM版移植安装的编译过程。
在众多嵌入式操作系统中,Linux目前发展最快、应用最为广泛。性能优良、源码开放的Linux具有体积小、内核可裁减、网络功能完善、可移植性强等诸多优点,非常适合作为嵌入式操作系统。一个最基本的Linux操作系统应该包括:引导程序、内核与根文件系统三部分。
去年的9月8日发布 LFS 7.10之后,就在昨天,LFS 8.0 终于面世了。LFS 的全称是 Linux From Scratch,就像它的名字一样,这个发行版是一个教我们如何从零开始打造自己的 Linux 发行版的指南,同时还有姊妹发行版 BLFS,全称是 Beyond Linux From Scratch,昨天 BLFS 8.0 也一同发布了更新。准确地说,昨天 LFS 社区正式发布了 LFS Version 8.0, LFS Version 8.0 (systemd), BLFS Version 8.0, 和 BLFS Version 8.0 (systemd) 四个更新版本。
本文关键字:高版本gcc cross compile 交叉编译低版本gcc,boostrap,为tinycolinux低版本linux kernel生成gcc,在32位linux cross build gcc target for linux64 execution,32位64位混合rootfs制作,运行cross build的应用。
目前虽然RISC-V的硬件开发板能够运行Linux的十分难得,从探索RISCV的生态的角度上来看,使用模拟器也是一种非常好的方式。使用QEMU能够很好的模拟RISCV的硬件资源,后期有实际的开发板后将其软件生态移植上去也并不复杂。
Linux平台上有许多开源的嵌入式linux系统构建框架(框架的意思就是工具),这些框架极大的方便了开发者进行嵌入式系统的定制化构建,目前比较常见的有OpenWrt, Buildroot, Yocto,等等。其中Buildroot功能强大,使用简单,而且采用了类似于linux kernel的配置和编译框架,所以受到广大嵌入式开发人员的欢迎。
最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命令就可以完成非常复杂的功能,可是我们有没有想过,为什么会有这样的效果?如果没有去追问,只是机械地完成,并且看到实验效果,这样做其实并没有真正的掌握系统移植的本质。
交叉编译其实是相对于本地编译(native build)来说的,我相信大家最开始学习 C/C++ 这些语言的时候,都是在电脑上写程序,然后在电脑上编译生成可执行文件,最后在电脑上运行。程序的编辑——》编译——》运行,整个过程都是在一台 X86 电脑上。
Busybox是一个开源的、轻量级的软件工具集合,旨在提供一个精简的Unix工具集,适用于嵌入式系统和资源受限的环境。它将许多常用的Unix工具(如ls、cp、cat、mv、grep、find、telnet等)合并为一个可执行文件,从而减少了系统的存储空间和资源占用。
在Linux中,可执行文件的格式是ELF格式,而有一些命令可以帮助我们了解它们更多的“秘密”,以此来帮助我们解决问题。
静态库是一个包含预编译代码的文件,可以与可执行程序链接以创建单个自包含的可执行文件。静态库中的代码直接链接到可执行文件中,这使得它比动态库更快、更高效。
简单地说,就是程序的编译的环境和它的运行的环境不一样。即在一个平台上生成另一个平台上的可执行代码。交叉编译的概念主要和嵌入式开发有关。
经常有人在群里问我各种“小”问题: Jetson TX2 显存是多大? Jetson TX2 开发板的尺寸是多大?给我个孔位图纸 Jetson TX2 支持最大能支持几路摄像头? 这个XX 牌子的摄
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10693247.html
领取专属 10元无门槛券
手把手带您无忧上云