我是微控制器领域的新手。我需要移植一个IDE,为AVR微控制器编译程序,为ARM微控制器编译程序。我刚刚将编译器从AVR替换为ARM,并根据某人的指示添加了一些选项。以下是命令: 当我执行它时,我得到以下错误: 我可以得到一些关于这个错误是什么以及如何解决它的帮助吗?我也不知道命令行中的那些选项指定了什么。
我有一个项目,我想在链接阶段保留某些功能/部分。 我试过: 但这是针对编译器的,而不是针对链接器的。 现在链接器负责并使用了-gc部分,我想保留的功能“消失了”:( 如何指示链接器不删除所需的函数。 我想这样做的原因是函数的后期构建用法,通过改变二进制文件上的内容。
我正在使用最新版本的ARM打包GCC: arm none eabi gcc(GNU arm Embedded Toolchain 10-2020-q4-major)10.2.1 20201103(发布)版权所有(C)2020自由软件基金会。 当我使用“-mcpu=cortex-m0-mthumb-Ofast”编译这段代码时: 我希望除法是通过乘法和移位来完成的,但相反,生成了以下代码: 使用_ud
如何将以下链接器关于错误外部声明的警告设置为错误?我正在编译 Uilding目标:xxxxx.elf调用:Cross ARM C Linker arm-no-eabi-g-mcpu=cortex-m4-mthum-mplon-abi=softfp-mfpu=fpv4-sp-d16-O0-fMessage-long=0-ffunction-section-fdata-section-flto-g3-
我正在使用GCC4.71工具链为STM32F4(ARM Cortex-M4)微控制器编译我的c程序。在我的程序被编译和链接(我有.elf文件)之后,我想提取每个源代码行的第一条指令的地址。目前,我正试图通过解析反汇编文件来实现这一点——例如,下面我在main的第41行得到了adr 0x8000c44。C 有没有其他更方便的方法来使用gcc工具获取这些信息? 样品拆解文件: c:\a_test2/m
我正在使用下面的gcc工具链。gcc版本5.4.1 20160919(发布)[ARM/embedded-5-branch修订版240496](适用于ARM嵌入式处理器的GNU工具) 我可以创建。h.gch文件,但无法获取。h.gch在构建. c文件时使用。我使用-H和-Wulult-pch选项来检查原因,但编译器没有给出任何信息。就像。h.gch不存在,总是搜索。h文件。
基本上,我想找到一种方法来使用我已经安装在Linux子系统中的gcc和g++编译器,在我版本的windows上使用任何文本编辑器。 我知道在Linux上,您可以从Sublime的文本构建和运行您的C程序。那么,有没有人在bash之外找到一种与WSL交互的方法呢? 谢谢,也很抱歉我问了这个让人困惑的问题。
在任何人告诉我查找旧答案或RTFM之前,请注意我已经这样做了,所以请在指示我查找其他地方之前阅读详细信息。 我已经确定,优化级别的差异并不像为更高的优化级别启用了一些不同类型的优化标志那么简单。 例如,我首先通过以下步骤发现了O0和O1的优化标志的差异: 这给了我一个O1对O0启用的各种优化标志的列表。 然后,我用-O0编译了代码,但是添加了O1对O0启用的所有单独的优化标志,因为结果应该和O1一
我有一个项目,我尝试为微控制器构建固件,并尝试更好地控制使用的优化标志。我想要,而不是使用
我现在尝试创建一个运行STM32F0xx MCU的固件映像。它类似于flash算法,提供一些函数调用来控制STM32F0xx MCU引脚,但它比flash算法更复杂。所以它将使用STM32 HAL lib和Mbed lib。 编译器/链接器使用“-ffunction sections”和“-fdata sections”标志。 所以我使用“attribute((used))”尝试将函数保留在固件映
我正在使用GCC为ARM开发一个C。我遇到了一个问题,我没有启用优化,我无法为我的代码创建二进制(ELF),因为它不适合可用空间。然而,如果我只是启用调试优化(-Og),这是我所知的最低优化,代码很容易适合。 在这两种情况下,都启用了-ffunction-节、-fdata-节、-fno-异常和-Wl、--gc-节。 闪存大小:512 kB 没有优化:. text溢出约200 kB 使用-Og优化:
我正试图弄清楚是否要针对Clang、GCC或两者提交错误报告(我已经针对Clang trunk和GCC 4.7.2进行了测试:如果有人可以针对GCC trunk验证这一点,那将会很有帮助): 基本上,以下代码三行文件在默认和C 11模式下编译良好: 请注意,没有预先声明,但这是明确确定的。 但是,Clang(但不是GCC)拒绝以下内容: 来自Clang的错误是“在指定范围内没有找到类型为'void
null 我已经为此提交了一个GCC bug:https://GCC.gnu.org/bugzilla/show_bug.cgi?id=63203--我仍然希望在这里更好地理解哪里出了问题,以及它如何影响类似诊断的可靠性。
我想我在lambdas和可调用对象之间发现了另一个“铿锵vs gcc”的不一致性。 ::运算符()应该等同于C::运算符(),但是如果通用lambda中的变量包为空,gcc拒绝编译: 15:错误:对'(main()::)(int)'l(1)的调用不匹配; 15:注意:候选:decltype(((main():)0u)。main():(x,)(*)(自动:1 15:注:候选人需要3个参数,提供2个
我想根据我在perl中所做的事情用C语言做一个加密/解密程序。编译后的perl程序是2MB,所以我想如果我用C语言编写它,它的可执行大小会更小。 我的问题是,虽然我让它加密,但我无法解密它。自从我上次使用C以来,已经很久了,所以我忘记了很多东西。有人请启发我在这里做错了什么?谢谢。