首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    比较 目前,针对于 ARM 平台的主流编译器主要有以下三者: 比较 ARMCC IAR GCC for ARM LLVM(clang) 命令行工具 随IDE发布,也独立提供 仅随其IDE发布,不独立提供 armcc.exe   ARM 指令和 Thumb® 指令编译器。 用来编译 C 和 C++代码。它支持内联和嵌入式汇编程序,还包括高级 SIMD 矢量化编译器。    ISO Standard C++:2011 source. armcc 符合 Base Standard Application Binary Interface for the ARM Architectur D:\ARM\ARM_Compiler_5.06u4>armcc Product: ARM Compiler 5.06 Component: ARM Compiler 5.06 update 4 (build 422) Tool: armcc [4d3604] Usage: armcc [options] file1 file2 ... filen Main options: --arm

    22.9K310编辑于 2022-06-28
  • 来自专栏10km的专栏

    cmake:基于MDK(Keil)的Nationstech.N32G45x平台交叉编译工具链定义

    cmake实现交叉编译最重要的就是正确的定义编译工具链(toolchain),本文以Nationstech.N32G45X(国民技术)平台为例说明如何在定义cmake交叉编译工具链来实现使用MDK的armcc compile @rem ------------------------------------------------------------ @set PATH=C:\Keil_v5\ARM\ARMCC 编译器安装默认位置 set(_compiler_prefix "C:/Keil_v5/ARM/ARMCC") if(NOT EXISTS ${_compiler_prefix}) if(NOT $ENV armcc) if(NOT _armcc_path) message(FATAL_ERROR "NOT FOUND compiler armcc in system path") endif () get_filename_component(_bin ${_armcc_path} DIRECTORY ) get_filename_component(_compiler_prefix

    1.5K60编辑于 2022-04-13
  • 来自专栏裸机思维

    【编译器玄学研究报告】后续跟踪(1)——诈尸和翻车

    【开门见山】 ---- 在前几期的【编译器玄学报告】中,我们分别介绍了armcc和armclang的一些比较“阴间”的坑——有些是编译器的bug,有一些就单纯只是C语法上的一些陷阱而已,还没有看过的小伙伴赶快点开下面的链接来看看 【诈尸的armcc】 ---- 原本已经结束产品生命周期的 Arm Compiler 5(armcc)在最新的MDK 5.33中诈尸了——发布了专门修正bug的修订版 5.06u7。 自从2015年对外宣布5.06是“最终绝不修改版”以来,armcc至今一共发布了7个修正版,像极了在毕业论文面前抓狂的你: 其中陪伴我们时间最长的就是 5.06u6了。 当然不要高兴的太早,这并不意味着armcc又回来了,这通常只是“大公司展示自身责任心”的一种擦屁股行为,对于结束了生命周期的产品来说,不能保证此类修正会持续进行。 当然换个角度来说,“现役”编译器这种发现bug立即就修正的速度,也是 armcc这种“退役”老古董所不能比拟的。

    87020发布于 2021-01-22
  • 来自专栏裸机思维

    【编译器玄学报告】第四期——成也warning,败也warning

    我突然想起来以前认识的一个大佬对我说过这样的话: armcc不报告很多warning恰恰是因为armcc其实不是一个很优秀的编译器,很多主流编译器,比如 gcc,llvm,IAR都会注意到的值得warning 的问题,armcc都会忽略…… 既然可以掩耳盗铃,我们不妨试试看把Arm Compiler 6的warning模式变得跟 armcc一样: ? 每个下载了MDK的中国用户,都被强制要求关注一个MDK公众号(可惜还没有) MDK必须每天把自己的文档拆成小文章,推送给每个用户,而且有些内容还要常年重复推送,让大家不至于漏掉…… 最后关于大家对armcc 的谜之信任,我还是想重复下那句话: armcc不报告很多warning恰恰是因为armcc其实不是一个很优秀的编译器,很多主流编译器,比如 gcc,llvm,IAR都会注意到的值得warning的问题 ,armcc都会忽略……

    1K10发布于 2021-02-07
  • 来自专栏裸机思维

    【反复横跳】从AC5到AC6转型之路(1)——补救和准备

    Arm Compiler 5,也就是大家口中的 armcc,它很弱么?相对免费的工具链 arm gcc来说,它还是强很明显;但你要说它非常能打么? 基于这一前提,我们将用随后的一系列文章来介绍: 短期内:MDK 5.37 抛弃 armcc 的补救措施 中期:从 armcc 向 armclang 进行过渡时期的一些快速应对的方法 面对一些 armcc 和armclang是一对连体兄弟,身子是armlink,而两个脑袋分别是 armcc 和 armclang。 这里我给出一个万能药方: 对这部分C源文件,请使用 armcc 编译,生成 .o 后扔到 Arm Compiler 6里直接参与链接即可。 \note for arm compiler 6 #undef __IS_COMPILER_ARM_COMPILER_6__ #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION

    6.5K51编辑于 2022-05-17
  • 来自专栏技术让梦想更伟大

    熟悉又陌生的arm 编译器详解(armcc/armclang)

    再来简单看看一些编译器的历史,GCC、LLVM以及Clang等,以及文章介绍的armcc 以及armclang。 armclang 集成于armcc,基于新的架构 clang 和LLVM,作为arm 的第六代编译器,AC6,成为今后主推的编译器。 1、armcc armcc 编译器 主要是编译.c/.cpp源文件文件,生成目标文件,通过各种编译选项 command-line来支持各种特性。接着来罗列几个常见的编译选项。 一般的arm cc的编译器的编译器的语法如下: armcc [options] [source] 举例如下: armcc -I ../common/ -I .. armcc -c -M -I ..\SYSTEM\sys -I ...

    3.7K40编辑于 2022-12-22
  • 来自专栏全栈程序员必看

    KEIL / MDK生成BIN文件的两种方式「建议收藏」

    绝对路径方式 绝对路径方式,如果更换电脑等,需要手动修改MDK工具链(formelf.exe)所在路径与项目文件名(例如test_app) "D:\Program Files\MDK516\ARM\ARMCC /obj/test_app.axf" 2.2 相对路径方式 使用相对路径生成,则不需要任何修改 $K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin ! L 编译后,Build Out框可以看到: After Build - User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe obj\test1.axf 上述操作后,在xxx.uvprojx当前目录下,可看到一个test1.bin 如果希望生成.bin文件输出在当前工程下的指定目录,比如Bin文件夹,可如下操作: $K\ARM\ARMCC L 编译后,Build Out框可以看到: After Build – User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe

    4.6K10编辑于 2022-09-06
  • 来自专栏全栈程序员必看

    KEIL MDK生成bin文件的两种方法[通俗易懂]

    Rebuild -> Run #1(勾上) -> 输入bin文件的生成方式 bin文件的生成都是通过fromelf.exe来实现的,fromelf.exe一般在Keil的安装路径下: 例:D:\Keil\ARM\ARMCC for Target -> Output -> Name of Executable -> test_app(生成.hex 和 .axf文件) 1、生成方式 -> 绝对路径 D:\Keil\ARM\ARMCC 2、生成方式 -> 相对路径 $K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin ! L 上面这个是在当前xxx.uvprojx项目目录下,可以看打一个bin文件 如果希望生成.bin文件输出在当前工程下的指定目录,比如Bin文件夹,可如下操作: $K\ARM\ARMCC\bin\fromelf.exe

    4.7K21编辑于 2022-11-01
  • 来自专栏全栈程序员必看

    keil如何生成bin文件_keil4生成bin文件

    绝对路径方式 绝对路径方式,如果更换电脑等,需要手动修改MDK工具链(formelf.exe)所在路径与项目文件名(例如test_app) “D:\Program Files\MDK516\ARM\ARMCC /obj/test_app.axf” 相对路径方式 使用相对路径生成,则不需要任何修改 $K\ARM\ARMCC\bin\fromelf.exe –bin –output=@L.bin ! L ---- 编译后,Build Out框可以看到: After Build – User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe obj\test1.axf 上述操作后,在xxx.uvprojx当前目录下,可看到一个test1.bin 如果希望生成.bin文件输出在当前工程下的指定目录,比如Bin文件夹,可如下操作: $K\ARM\ARMCC L ---- 编译后,Build Out框可以看到: After Build – User command #1: D:\Program Files\MDK516\ARM\ARMCC\bin\fromelf.exe

    3.7K20编辑于 2022-11-01
  • 来自专栏电子电路开发学习

    Keil-MDK开发环境生成Bin格式文件

    fromelf.exe文件的位置在安装目录Keil_v5\ARM\ARMCC\bin或者Keil_v5\ARM\ARMCC_505u2\bin目录下。 命令格式为: [fromelf.exe文件路径] --bin -o [BIN路径} [AXF文件路径} 如: E:/Keil_v5/ARM/ARMCC/bin/fromelf.exe --bin -o

    70810编辑于 2024-05-09
  • 来自专栏10km的专栏

    cmake/ASR1603:交叉编译工具链定义

    (CROSS_COMPILER_PREFIX) set(_compiler_prefix ${CROSS_COMPILER_PREFIX}) else() find_program(_armcc_path armcc) if(NOT _armcc_path) message(FATAL_ERROR "NOT FOUND compiler armcc in system path") endif () get_filename_component(_bin ${_armcc_path} DIRECTORY ) get_filename_component(_compiler_prefix CROSS COMIPILER") endif() # Specify the cross compiler SET(CMAKE_C_COMPILER "${_compiler_prefix}/bin/armcc CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "" FORCE) UNSET(CMAKE_AR_FLAGS CACHE) SET(CMAKE_AR_FLAGS "-p -armcc

    1.3K10编辑于 2022-04-13
  • 来自专栏TencentOS-tiny

    【编译器玄学研究报告】第二期——break

    真的非常非常抱歉,感觉辜负了很多人的期待;同时也非常非常的感谢,感谢你们的耐心和信任——为了纪念这一时刻,我准备就大家非常信赖和依恋的armcc(Arm Compiler 5)爆个黑料。 ---- 【正文】 Arm Compiler 5,也就是大家熟悉的armcc,距离官方2017年最后一次更新已经过去3年多了。 实际上官方早在2016年发布Arm Compiler 5.06u3的时候就已经通过各种渠道对外界喊话——“我要是再更新armcc,我就卖了我自己”,结果2017年,5.06u6不期而至,孙正义爸爸的钱还是 “真香”的——这里也许有些许戏虐的成分在里面,但armcc接近软件生命周期的终点是不争的事实: armcc 真的太老了! 如果不确定自己的armcc是不是这一版本,可以打开MDK的help->About,如果你是日常的armcc玩家,应该可以看到类似如下的信息(是的,就是这个 V5.06 update 6) ?

    52010发布于 2020-07-16
  • 来自专栏全栈程序员必看

    KEIL_MDK生成Bin文件「建议收藏」

    是使用安装目录下的(formelf.exe)工具来生成bin文件,配置方法:勾选 “Run # 1”,在后面输入框写入bin文件生成方式 2、绝对路径 "D:\Program Files\MDK516\ARM\ARMCC /obj/test_app.axf" 3、相对路径 在工程移动的时候,相对路径不会随工程文件位置的改变而重新配置; $K\ARM\ARMCC\bin\fromelf.exe --bin --output L       //在xxx.uvprojx当前目录下,可看到一个test1.bin 将bin文件生成在指定目录下 $K\ARM\ARMCC\bin\fromelf.exe --bin --output

    2.2K10编辑于 2022-11-01
  • 来自专栏全栈程序员必看

    keil5如何生成bin文件_怎样创建一个文件夹

    原因 我碰到原因就是SCT加载文件的问题,我定义了不少段,所以导致bin文件变成了文件夹 一般的Bin生成方法:在USER里面Run#1加上K\ARM\ARMCC\bin\fromelf.exe --bin -o " 解决方法 Keil里面的fromelf帮助,可以去看看 bincombined_base与你自己的起始地址有关,K\ARM\ARMCC\bin\fromelf.exe --

    2.5K20编辑于 2022-11-10
  • 来自专栏技术干货

    keil5更新5.36版本及以上版本无法编译问题解决

    1.配置好的工程发现编译出现以下问题 2.编译错误提示没有Version 5 的编译环境,我们可以去老版本的安装路径下,拷贝一份ARMCC的文件夹至新版本的keil5安装目录ARM下 我安装的老版本的keil5 路径在以下图,拷贝ARMCC文件夹至新版本路径 3.打开新版本keil5,打开以下工具,并根据下面操作 找到新的安装路径并添加  保存  4.保存第三点操作后,打开以下工具并切换,重新编译即可

    6.5K10编辑于 2024-07-11
  • 来自专栏10km的专栏

    conan入门(五):conan 交叉编译引用第三方库示例

    (CROSS_COMPILER_PREFIX) set(_compiler_prefix ${CROSS_COMPILER_PREFIX}) else() find_program(_armcc_path armcc) if(NOT _armcc_path) message(FATAL_ERROR "NOT FOUND compiler armcc in system path") endif () get_filename_component(_bin ${_armcc_path} DIRECTORY ) get_filename_component(_compiler_prefix INCLUDE(CMakeForceCompiler) # Specify the cross compiler #SET(CMAKE_C_COMPILER "${_compiler_prefix}/bin/armcc CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "" FORCE) UNSET(CMAKE_AR_FLAGS CACHE) #SET(CMAKE_AR_FLAGS "-p -armcc

    2.1K30编辑于 2022-04-13
  • 来自专栏TencentOS-tiny

    【编译器玄学研究报告】第一期——位域和volatile

    事实证明,在Arm Compiler 5(也就是大家熟知的armcc)下的确没有问题,这是生成的代码: ? 果然还是armcc大法好! 实际情况】Arm Compiler 6比Arm Compiler 5在语法理解上更严格,而Arm Compiler 5在语法理解上更宽松,并且隐含了一些编译器自己的“私货”,大家只不过是先入为主,早已习惯了armcc ---- 【后记】 armcc并不比Arm Compiler 6更可靠,实际上,作为一个已经停止维护的编译器 armcc拥有众多隐藏的天坑,后面有机会我将向大家展示几个匪夷所思的armcc编译器bug

    52920发布于 2020-07-16
  • 来自专栏技术让梦想更伟大

    嵌入式开发如何统计运行占据内存

    /125903384 整理:技术让梦想更伟大 | 李肖遥 1、各抒己见 小明说:想要计算 一段算法在所占用的内存 A(笔者): 建议看map文件,map文件可以看到data 段 的一些占用size,以armcc 2、笔者分析 笔者来说说看法,经过试验得出的结果,以ARMCC、IAR以及GCC为例 2.1 ARMCC 分析 以一个例程来分析,led.c 最简单的 u32 LEDValue1 = 0XFFFF; const 从上面Map信息里面看到Led.o的size情况: Code:156 Byte RW Data:4Byte ZI Data:16Byte RO Data:0Byte 所以如果算法单独使用了一个.o文件,在armcc GPIOD,GPIO_Pin_5); GPIO_SetBits(GPIOD,GPIO_Pin_5); } 123456789 在这里插入图片描述 第六条,map文件会分析栈的情况,好像也没有,至少对于armcc

    83340编辑于 2022-12-22
  • 来自专栏琦小虾的Binary

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

    4. armcc ARM 公司推出的编译工具,功能和 arm-none-eabi 类似,可以编译裸机程序(u-boot, kernel),但是不能编译 Linux 应用程序。 armcc一般和ARM开发工具一起,Keil MDK、ADS、RVDS和DS-5中的编译器都是armcc,所以 armcc 编译器都是收费的。

    5.7K50发布于 2018-01-02
  • 来自专栏技术让梦想更伟大

    【进阶】详解KEIL的分散加载文件

    -c -g function.c armcc -c -g main.c armlink --map function.o main.o -o squared.axf 123 --map选项用于生成内存映射文件即 4、编译并链接 armcc -c -g function.c armcc -c -g main.c aarmlink --map --scatter=scatter.scat function.o main.o 4、编译并链接 armcc -c -g function.c armcc -c -g main.c armlink --no_autoat --scatter=scatter.scat --map function.o armcc -E. 这会通过armcc预处理器传递分散文件。 你可以: 将预处理指令添加到分散文件的顶部 在分散文件中使用简单的表达式评估。 例如,分散文件file.scat, 可能包含: #! armcc -E #define ADDRESS 0x20000000 #include "include_file_1.h" lr1 ADDRESS { ... } 123456789

    2.1K20编辑于 2022-12-22
领券