首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

交叉编译学习笔记(二)——交叉编译器的命名规则

交叉编译学习笔记(二)——交叉编译器的命名规则 在进行嵌入式开发过程中,用到的交叉编译器经常是这样的名称: arm-linux-gcc arm-none-linux-gnueabi-gcc arm-linux-gnu-gcc...上面对应的交叉编译器的前缀有arm-linux-, arm-none-linux-gnueabi-, arm-linux-gnu- 笔者很困惑,这些编译器同为ARM下的gcc编译器,不同的命名到底会导致这些编译器有哪些区别...,即系统架构,表明交叉编译器的目标系统平台架构,即用该交叉编译器编译出的程序是运行在哪种CPU上。...比如用该交叉编译器编译一个U-boot或者其他小程序,是运行在无嵌入式Linux系统环境中单独运行的一个程序。...arm-none-linux-gnueabi基于 gcc ,使用 glibc 库,是经过 Codesourcery 公司优化过推出的编译器,且该交叉编译工具的浮点运算非常优秀。

4.3K50

MicroPython 交叉编译器(win10构建)

这篇文章来编译一个microPython的交叉编译器。 Python的脚本为了速度变快做了一次“编译”,对!就是这样,其实是编译过一次的。将脚本预编译为字节码。 作用是py文件到mpy文件。...打开以后,我们关注这三个文件夹 py文件夹是mpy的核心实现,编译器,运行时候的库,核心库 mpy-cross就是我们的交叉编译器 在端口这个文件夹里面,关注这些 运行Arm-MCU的最低标准...mininal是移植在别的MCU的时候从这开始 unix的实现,需要在unix的环境下编译 打开我们的文件夹,可以看到一个vcxproj的VS项目文件 这样更清楚 在编译后运行的时候,可以通过参数指定优化的级别...打开main文件,在开始就可以看到我们的默认优化的级别是0 和我们的文档对应了 GC堆的大小,64位的指针更占地方 输入help的打印文件,这个语法有点奇怪 然后你就打开这个vs的项目;

2.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Go 编译器优化

《从.go 文本文件到可执行文件》一文中,我们简单描述了 Go 编译器的工作流程。本文将继续深入其中的一些代码优化的工作。...a 永远是大于 b 的,即 a > b 永远为 true ,也就是说 else {} 分支属于 unreachable code 将永远不会被执行,所以编译器会进行第一次优化:分支消除 package...相同道理,max == b 永远为 false ,编译器会进行第二次分支消除优化: package main func main() { const a, b = 200, 100 const max...GOSSAFUNC=main go build main.go 查看生成的 ssa.html : 死代码消除过程 最终生成的 SSA 可以看到,main 函数内的所有逻辑确实都被编译器优化掉了。...; i < 10; i++ { n = double(n) } println(n) } func double(n int) int { return 2 * n } 对于上面的代码,编译器内联优化后会变成

74020

Linux 内核 内存管理】优化内存屏障 ① ( barrier 优化屏障 | 编译器优化 | CPU 执行优化 | 优化屏障源码 barrier 宏 )

文章目录 一、优化屏障 ( 编译器优化 | CPU 执行优化 ) 二、优化屏障源码 一、优化屏障 ( 编译器优化 | CPU 执行优化 ) ---- " 代码 “ 编译成 ” 可执行文件 “ , 执行该..." 优化主要分 2 种 : ① 编译器优化 : 为了 提高程序执行性能 , 编译器会在 不影响 程序逻辑的前提下 , 对程序指令进行优化 , 主要操作是 调整程序指令的执行顺序 ; ② CPU 执行优化...对指令顺序 进行重排 , 保障 代码编译时 , 在 " 优化屏障 之前 “ 的指令 , 不会在 ” 优化屏障 之后 " 执行 ; 二、优化屏障源码 ---- 在 Linux 中 , " 优化屏障 "...是通过 barrier() 宏定义 实现的 , gcc 编译器 的 " 优化屏障 " 定义在 linux-5.6.18\include\linux\compiler-gcc.h 源码中 ; /* Optimization...-5.6.18\include\linux\compiler-gcc.h#20 不同的编译器 的 " 优化屏障 " barrier() 宏定义 位置不同 , 如 clang 编译器优化屏障 定义在

2.5K10

Java编译器优化技术

子表达式消除子表达式消除是一种编译器优化技术,用于移除重复的计算表达式。...如果没有优化编译器将会对同一个表达式进行两次计算,即两次进行乘法和加法运算。...在JAVA编译器优化中的作用和应用场景在JAVA编译器优化中,指令重排序和消除有助于提高程序的执行效率和性能,以此优化程序的运行速度和资源利用。...这些优化手段的目标都是让程序更加高效地利用计算资源,提高程序的运行速度和响应性。循环优化循环优化是一种编译器优化技术,用于改进循环结构的执行效率。...这些循环优化技术都是由Java编译器根据程序的结构和运行环境进行优化,无需手动操作。编译器会根据具体情况自动应用这些优化技术,以提高循环的性能和效率。

34671

Linux基础(交叉工具链)

有些时候,我们用习惯了arm-linux-gcc作为编译ARM系统软件的工具,但并不知道其名称来源,慢慢地就会以为这样的工具天生就有的,直到有一天用到arm-linux-ranlib发现咦!...最近在做一个智能家居的项目,可是在移植CGIC库的时候,发现编译库的时候出现了找不到一些交叉编译工具命令: ?...显然系统说找不到arm-linux-ranlib编译命令,但是我的ubuntu已经成功移植了ARM交叉编译工具链,为什么说找不到的呢?该如何解决?...显然看到一堆交叉编译命令在这里,而且并没有看到arm-linux-ranlib这条命令,但是能够看到有arm-none-linux-gnueabi-ranlib这条命令,所以要进行软连接。...第三步:软连接,通过输入 #sudo ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib 就可以链接处命令arm-linux-ranlib啦!

1.4K30

Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)

apt-get install gcc-arm-linux-gnueabihf   使用如下命令进行arm-linux-g++的安装: sudo apt-get install g++-arm-linux-gnueabihf...  如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载: sudo apt-get remove gcc-arm-linux-gnueabihf   arm-linux-g++的卸载:...sudo apt-get remove g++-arm-linux-gnueabihf 方法二:   arm-linux-gcc3.4.5 arm-linux-gcc4.3.2版本下载 链接:https...://pan.baidu.com/s/1f9m3ggdenuRQGb_NZ87bNA 提取码:krn5   安装64位的交叉编译工具,先根据上面提供的下载地址下载安装包:arm-linux-gcc-...命令如下: sudo cp -r gcc-3.4.5-glibc-2.3.6 /usr/local/arm   6.打开(/etc/profile)配置环境变量和库变量,目的是以后可以在任何位置使用该交叉编译器

7.1K20

JVM之早期(编译器优化

概述 JVM的编译器可以分为三个编译器: 1. 前端编译器:把.java转变为.class的过程。如Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)。 2....JIT编译器:把字节码转变为机器码的过程,如HotSpot VM的C1、C2编译器。 3. AOT编译器:静态提前编译器,直接将*.java文件编译本地机器代码的过程。...本节讲述的仅限于第一类编译过程 Javac编译器 Javac编译器本身是由Java语言编写的程序。 编译过程大致可以分为3个过程: 1. 解析与填充符号表过程。 2....可以把它看做是一组编译器的插件,在这些插件里面,可以读取。修改、添加抽象语法树中的任意元素。...如将局部变量声明为final,对运行期是没有影响的,变量的不变性仅仅由编译器在编译期间保障。

38630

Linux交叉编译Windows静态库

unsetunset从 Linux 交叉编译适用于 Windows 的静态库unsetunset 从 Linux 交叉编译 Windows 的静态库是一个相当简单的过程。...步骤如下: 步骤 1 - 安装所需的交叉编译器 第一步是安装交叉编译器,这样我们就可以在 Linux 机器上编译适用于 Windows 的代码。...Linux 有几种可用的交叉编译器,例如 MinGW、Cygwin 和 Mingw-w64。 在本文中,我们将使用 Mingw-w64 交叉编译器。...; } 第 3 步- 编译静态库 下一步是使用交叉编译器编译静态库。...这可以包括记录使用的交叉编译器、用于编译静态库的命令以及任何特定于平台的注意事项。 总体而言,从 Linux 交叉编译静态库到 Windows 是开发人员必备的一项技能。

19210

LinuxLinux编译器gccg++的使用

gcc test.c -E -o test.i /usr/include/stdio.h //linux下的头文件路径 C:\Program Files\Microsoft Visual Studio\...2022\Community\SDK\ScopeCppSDK\vc15\SDK\include\ucrt\stdio.h //我的windows下的头文件路径 预处理之后的文件中多出来的一大堆代码其实是从linux...劣势:形成的可执行程序体积太大,网络、磁盘、内存的资源占用量大, 2.动态链接 通过编译器内部的链接器,来链接标准函数库,值得注意的是,动态链接的时期是在程序运行的时候,如果程序需要链接,链接器就会链接标准函数库...windows下动态库后缀为.dll静态库后缀为.lib 在安装vs2022时,我们安装的不仅仅是编译器本身,还要安装标准库的.h文件,以及标准动静态库等 5.Linux的大部分命令就是用C语言写的...大家需要有这个认识,Linux中大部分指令都是用C语言写的。

2.2K11

编译器之返回值优化

后面有读者私下跟我沟通,那块代码举例不是很合适,因为编译器会进行返回值优化。在这块特此说明下,当时的举例,目的是为了让读者理解引入move语义的原因,忽略了编译器优化这个特点。...其实这是因为编译器对函数返回值做了优化导致。...那么,编译器优化后与优化前相比,减少了2次拷贝构造函数以及两次析构函数。...do sth with obj } 在此,我说下自己的观点吧: 代码优化不应该依赖编译器,因为无法保证在其他编译器下就能得出跟当前类似的优化效果 依赖编译器优化的前提是开发人员了解编译器优化机制或者说开发人员知道写怎样的代码能达到编译器优化的标准...了解编译器优化,可以提升我们的程序运行效率,但是需要注意的是,如果单纯依赖编译器优化,可能会导致某些我们意想不到的情况发生。

1.2K20

LuaJit交叉编译移植到ARM Linux

这里选择LuaJit在嵌入式Linux系统使用,LuaJit交叉编译也比较简单,没有第三方库的依赖,直接交叉编译源码即可。...: tar xvzf LuaJit-2.0.5.tar.gz 上面那个博客中有详细的安装编译说明,这里主要引用了其ARM交叉编译的部分: 基于 GNU Makefile 的构建系统允许在任何主机上为任何受支持的目标进行交叉编译...例如,如果您在 Windows 或 macOS 主机上为嵌入式 Linux 或 Android 进行编译,则需要将TARGET_SYS=Linux添加到下面的示例中。...> 然后我们在编译个json的扩展库,json在实际开发中用的比较多,这里可以下载一个lua-cjson库进行交叉编译一下,源文件也在上面的码云链接里下载。...解压编译,cjson编译也比较简单,只需要改下编译器,修改一下lua头文件的路径,头文件路径即刚才安装LuaJit时的目录里的include。

36720

Linux交叉开发环境搭建 —— 效率之源

楼主今天终于把所有Linux开发环境需要的软件下载完毕了。虽然以前也是搭建过的,时间久了又折腾了一晚上。...交叉环境: Windows、Linux文件共享 SecureCRT 连接虚拟机终端 工具: VirtualBox ubuntu-16.04-desktop-amd64.iso(ubuntu官网下载) SecureCRT...三个IP网段相同 检查Windows和Linux是否相互ping通 ?...文件共享: Linux执行atp-get samba下载samba服务 选择Linux的home文件夹右键properties,配置文件夹共享 Windows映射网络驱动器\\192.168.8.197...完成交叉环境搭建后,就可以轻松的在Window下进行代码开发和编译了。同时也可以用SecureCRT 操作Linux,不必进行文件传输,切虚拟机终端这种繁琐的操作了。

1.9K110
领券