问题标签 [arm-none-eabi-gcc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openssl - 如何为 arm-none-eabi-gcc 交叉编译 openssl
我想在我的 stm32 开发板上使用 OpenSSL 的 SM2 算法,
当我搜索一种方法时,我发现所有解决方案都是通过 arm-none-linux-gnueabi 编译 OpenSSL,所以我按照描述进行了操作。
得到一个libcrypt.so后,我想用arm-none-eabi-ld链接库,但是出现了系统错误,看来我不能用arm-none-eabi-gcc。
那么,我能为它做些什么呢?
cmake - 静态库中中断向量的弱函数定义优于强函数定义
介绍
- arm-none-eabi-gcc 版本 10.3-2021.10 20210824
- 设备:北欧nRF52840/nRF52832/nRF52833
- 受影响的库:Nordic NRF5 SDK 17.1.0 - 自定义构建系统 (CMake)
我为 Nordic NRF5 SDK 编写了 CMake 构建系统(它本身只支持 makefile)。构建系统有一个可执行文件(应用程序)和多个底层静态库。依赖关系是这样的:
问题
我在 Nordic nRF5 SDK 之上创建了一个自定义 C 硬故障处理程序。它适用于以前的构建系统(makefile 构建系统)。必须注意的是,以前的构建系统不会创建静态库,新的 CMake 系统也是如此。它只是无条件地链接一切。
在理想情况下,SDK 的用户(即我)应该定义一个回调(HardFault_c_handler),它会在硬故障的情况下被中断向量调用。
在 nRF5 SDK 库中,目标 nrf5_sdk(静态库)中包含一个启动文件(modules/nrfx/mdk/gcc_startup_nrf52840.S)。此问题的相关代码:
HardFault_Handler
此外,在 ac 文件中有一个强定义,应该优先于这个弱定义。文件(components/libraries/hardfault/nrf52/handler/hardfault_handler_gcc.c)包含:
在硬故障的情况下,MCU 应该调用 c 文件中的代码,但事实并非如此。
我的问题是为什么?如何让它更喜欢强大的功能?我现在的想法,虽然我不确定。因为这个回调,即 ,HardFault_Handler
在主应用程序中(或在进入启动文件之前)没有被引用,链接器不需要解析它。只有当它在启动文件中看到这个符号时,它才会查找它,并且因为这是一个静态库,它只查找第一次出现。
我尝试过的事情
- 删除静态库,这解决了问题,
- 将弱定义分离
HardFault_Handler
到单独的程序集文件中,这使得链接器从首先出现的文件中链接函数,使用-Wl,-trace-symbol=HardFault_Handler
我看到链接器只查找第一次出现而不是停止(与弱和强无关)。 - 将 c 文件放在源文件中的启动文件之前,不会改变结果。
编辑
我的链接器标志:
c++ - 为什么我不能将 std::string 与 arm-none-eabi-g++ 编译器一起使用?
这个编译器业务不是我的强项...
我想<string>
在我的嵌入式 c++ 代码中使用模板库。
例如(须藤代码):
当我尝试编译此代码时,出现错误:
我的 Makefile 包含以下标志:
据我了解,包含标志-std=gnu++14
应该让我覆盖不?
c++ - 关于如何正确makefile arm stm32
我知道这已经是一个长期讨论的话题,但我还不能完全理解/实现适合我的文件夹系统和要求的 makefile。
这是我的任何项目的文件夹系统的样子:
我想要每个子文件夹(即 subdir_x.mk)的本地生成文件,其源文件是一个级别的(即../Src/file1.cpp),为此我构建了一个这样的生成文件(在这种情况下以 subdir_src.mk 为例)
当我得到输出时,这种方式似乎不起作用:
make: *** No targets specified and no makefile found. Stop.
当我在 cmd 中键入“make objects”时
我希望当我提示 /Debug/Makefile 时,我希望该 makefile 使用每个 subdir.mk 来构建对象,然后“大”makefile 链接所有对象。
我试图看看 stm32 构建系统,但我就是不太明白......所以我来了。
我很欣赏关于如何制作这个 makefile 的想法和评论,因为我目前的做法很陈旧。
另外我需要知道如何明确清除每个子文件夹中的相应文件。
c - 为什么我不能将函数返回的结构分配给结构?
我写了“轻量级”时间库,我有这样的 struct 和 typedef:
我有一个返回的函数tm_t
:
我想像这样使用它:
我收到此错误:
从类型'int'分配给类型'tm_t' {aka'struct tmt'}时不兼容的类型
我也尝试像这样更改函数和变量:
我做错了什么?