草庐IT

[linux]Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法

第一种:apt安装法:Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:sudoapt-getinstallgcc-arm-linux-gnueabihf  使用如下命令进行arm-linux-g++的安装:sudoapt-getinstallg++-arm-linux-gnueabihf  如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载:sudoapt-getremovegcc-arm-linux-gnueabihf  arm-linux-g++的卸载:sudoapt-getremoveg++-arm-linux-gnueabihf 第二种源

STM32 GCC编译器 .ld & .s文件详细解析

.ld文件的作用1.定义程序入口地址2.定义Flash、RAM中代码和数据的存放位置/*EntryPoint*//*程序入口——程序将从ResetHandler开始执行,而该函数定义在stm32fxxx.s启动文件中。ENTRY(Reset_Handler)/*Highestaddressoftheusermodestack//endofstack堆栈末尾=RAM起始地址+RAM空间大小/_estack=ORIGIN(RAM)+LENGTH(RAM);/endof“RAM”Ramtypememory*//*程序所必须的堆、栈空间大小定义/_Min_Heap_Size=0x200;/requir

【Linux】Linux编译器 gcc 的使用 | 动静态库的初步认识

👑作者主页:@安度因🏠学习社区:StackFrame📖专栏链接:Linux文章目录一、前言二、gcc演示翻译环境1、预处理2、编译3、汇编4、链接5、总结三、动静态链接库1、库的认识2、链接方式3、动态库与静态库4、两种链接方式的使用四、gcc选项汇总五、结语如果无聊的话,就来逛逛我的博客栈吧!🌹一、前言在上一篇Linux博客中,我们讲解了vim编辑器的使用,那么在Linux上写代码就没问题。但是写的代码如何编译?这就要用到我们今天讲的内容——gcc编译器。在Linux中,C语言用gcc编译;C++用g++编译。我们今天的目标就是学会如何使用gcc,了解程序经过翻译环境形成可执行程序的过程,并

【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】

文章目录GCClikely与unlikely介绍linux内核中的likely/unlikely上篇文章:ARM嵌入式编译系列4–GCC编译属性__read_mostly介绍下篇文章:ARM嵌入式编译系列4.2–GCC链接规范extern“C“介绍GCClikely与unlikely介绍likely和unlikely是GCC编译器提供的一种代码优化特性,这两个宏用于告诉编译器某个条件判断的结果是真还是假的可能性更大。在编写代码时,如果我们已经知道某个条件判断的结果大部分情况下都是真或者假,就可以使用likely和unlikely宏来进行标记,编译器会根据这个提示进行优化,使得代码运行更高效。以

下载较老版本或最新版本的ARM Linux gcc 交叉编译工具链

前言如果开发的ARM平台比较的多,需要多个版本的armgcc交叉编译工具链,那么如何获取较新版本的armgcc交叉编译工具链呢?下载现成的armgcc交叉编译工具链速度较快的,也比较新的,就到ARM官方网站下载下载地址:https://developer.arm.com/downloads/-/gnu-aGNU-ADownloads最新的下载地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloadslinaro.org下载这个linaro.org依旧可以下载到较老或者较新的ARMgcc交叉编译工具链http://re

arm-none-eabi-gcc编译、链接选项详解

1、-mthumb和-mthumb-interwork"-mthumb”的意义是:使用这个编译选项生成的目标文件是Thumb指令的,目前还没有发现GNU编译器中有哪一个选项可以指定生成的目标文件是thumb-2的。相对应的,“-marm“的意义是,使用编译选项生成的目标文件是ARM指令的。注意,不同编译器对该选项是否默认开启是不一样的,实际测试的结果如下:arm-none-eabi-gcc(20160919) 为Cortex-m4编译,(-mcpu=cortex-m4),不加-mthumb选项,提示“targetCPUdoesnotsupportARMmode”(Cortex-M处理器只支持T

AVR128单片机 USART通信控制发光二极管显示

一、系统方案二、硬件设计原理图如下:三、单片机软件设计1、首先是系统初始化voidport_init(void){PORTA=0xFF;DDRA=0x00;//输入PORTB=0xFF;//低电平DDRB=0x00;//输入PORTC=0xFF;//低电平DDRC=0xFF;//输出PORTE=0xFF;DDRE=0xfE;//输出PORTD=0xff;DDRD=0xFB;//输出PORTD=0xff;PORTF=0xFF;DDRF=0xFF;//输出PORTG=0xFF;DDRG=0xFF;//输出}2、数码显示程序unsignedcharrev_buf[10]={0x00,0x00,0x0

Linux怎样更新Centos下Gcc版本支持C++17?

[[Linux下的软连接、软链接的方式]][[Linux使用的filesystem库来自于c++17提供的新特性]][[Linux下centos查看GCC、G++版本]][[Linux下centos查看-std是否支持C17]]Centos7快速安装gcc8.3.1可支持C++17(附gcc相关链接整理)centos7直接yum安装的那个gcc版本为4.8.5,对于大多数的需求来说都是低了。系统安装镜像里的那个版本也是4.8.5。在g++7以上的版本中添加了对c++17的支持,所以为了工作需要现在需要升级到高版本。sudoyuminstallcentos-release-sclsudoyumi

信号时延估计算法—Gcc-Phat原理及实现

前言    基于TDOA(到达时间差)作为被广泛应用的声源定位算法之一,其核心即需要估计信号之间的时延,然后通过解方程组获取声源的位置。而广义互相关(GeneralizedCrossCorrelation)是估计时延的常用算法之一,接下来总结一下该算法。信号传播时延     如上图所示,一声源经过时间、分别到达麦克风1和麦克风2,则两个麦克风接收的信号可以表示为:即为信号到达两个麦克风之间的时延。互相关算法   先来看一下互相关计算时延的模型:   将信号带入上述模型:   假设与、均互不相关,则可得到(具体步骤不再赘述,感兴趣的可以自己展开推导一下):    然后假设、是互不相关的高斯白噪声

【ARM 嵌入式 编译系列 4.2 -- GCC 链接规范 extern “C“ 介绍】

文章目录extern"C"介绍extern"C"使用示例1.2.2作用场景上篇文章:ARM嵌入式编译系列4.1–GCC编译属性likely与unlikely学习下篇文章:ARM嵌入式编译系列5–GCC内建函数__builtin介绍extern“C”介绍extern“C”是一种链接规范,它用于告诉C++编译器按照C语言的方式来链接代码。这个关键字主要用于在C++代码中调用C语言的函数库。C++语言对函数进行了名字修饰(NameMangling),也就是说,C++编译器在编译函数的时候会给函数的名字添加一些额外的信息,例如函数的参数类型和数量。这样做的目的是为了支持函数的重载。然而,C语言不支持函