问题标签 [eabi]
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.
gcc - 使用 arm-none-eabi-gcc 从 cpp 生成 elf 文件
我想对嵌入式目标上的 c++ 源代码进行代码覆盖。基本思想是,生成一个精灵以及使用 gcc 打开的 -frofile-arcs -ftest-coverage。将其下载到 ARM 设备上,然后收集数据以使用 gcov 分析代码覆盖率。
如何使用 arm-none-eabi-gcc 命令生成 elf 文件。我已经设置了 GNU ARM 工具链并设置了 env 变量。我可以使用 arm-none-eabi-g++ -c -mthumb -mcpu=cortex-m3 -fprofile-arcs -ftest-coverage filename.cpp -o filename.elf 吗?
提前致谢!
gcc - ARM objcopy 导致空的二进制文件
如何arm-none-eabi-objcopy
将我的文件复制/翻译.axf
成.bin
适合闪存到设备的文件lm4tools
?
我有一个 ~20KB 的.axf
文件编译并链接到arm-none-eabi-*
. 对于任何有兴趣的人,这是与 Stellaris Launchpad 一起使用的。
我正在尝试修改stellaris-launchpad-template-gcc
项目提供的示例以使用 C++ 代码进行编译。我已经设法让它生成一个格式的.axf
文件elf32-littlearm
(根据.lst
文件),但是当我尝试做
要将其转换为可编程文件,.bin
文件输出的大小为 0 字节。这个问题描述了一个类似的问题。我确信.axf
文件是完整的,为什么我的.bin
文件没有填充任何内容?如果我删除-O binary
,该文件将被很好地复制。该目录是可写的,所有权限都很好。我已经尝试使用各种术语在 SO 和互联网的其余部分上进行搜索,所有这些都没有任何用处。以前好像没有人遇到过这个问题。
运行arm-none-eabi-objdump -D main.axf
会在似乎是汇编程序中生成文件转储:
这是正确的,还是我什至没有正确编译,因为这似乎是某种汇编程序?
关于文件的一些信息.axf
:
运行后arm-none-eabi-readelf -lS main.axf
,不返回程序头:
android - android NDK:连接时gdb崩溃
作为对此的跟进(我让 gdbserver 正常启动):Android NDK 调试:armeabi-v7a not working
NDK 8c、Eclipse 和 Cygwin、NativeActivity。
我在这里的while循环中设置了一个断点:
...但是连接时gdb崩溃了!它会“填充”大约 10 秒钟,然后崩溃。有一些输出。
这是 gdbserver 的输出:
最后几行是它对 gdb 连接和崩溃的响应。
这是 gdb 输出:
我以前使用 gdb 进行过调试,带有 Java 入口点和“armeabi”。切换到 C++ 入口点 (android_main) 和“armeabi-v7a”后,gdb 崩溃。不知道有没有关系...
对于它的价值,gdb 在我连接的任何其他时间也会崩溃(我在启动时删除了无限的 while 循环)。例如,我遇到了线程问题,所以我的应用程序无缘无故挂起。如果我在挂起时连接,那么 gdb 会以同样的方式崩溃。
arm - ARM - 如何使用 armcc 保存 r9 寄存器
阅读 ARM AAPCS (ARM EABI),我发现: 寄存器 r9 的作用是特定于平台的。虚拟平台可以为该寄存器分配任何角色,并且必须记录此用法。例如,它可以在与位置无关的数据模型中将其指定为静态基址(SB),或者在具有线程本地存储的环境中将其指定为线程寄存器(TR)。该寄存器的使用可能要求所保存的值在所有调用中都是持久的。不需要这种特殊寄存器的虚拟平台可以将 r9 指定为附加的被调用者保存的变量寄存器 v6。
我想将 r9 用作我的特定航空电子抢占式操作系统的 PID 保持器,但我不知道如何保存它:armcc C 编译器总是将它用作变量寄存器,因此它的值总是通过应用程序改变。
任何想法 ?armcc 可以吗?海湾合作委员会?戴铂?...
谢谢你的帮助。
问候
克里斯托夫
gcc - 如何抑制“警告:控制到达非无效函数的结尾”
我有一些 PowerPC 汇编代码用 gcc 交叉编译器和这个函数翻译:
在 PowerPC EABI 下,它返回在 R3 中计算的值。编译时我得到
有没有办法教 gcc 实际上返回了一个值?或者有没有办法抑制警告(不删除 -Wall 或添加 -Wno-*)?我想非常有选择地仅针对此功能抑制此警告,以使一般警告级别尽可能高。
由于调用者需要计算的值,因此不能使此函数返回 void。
c - 如何将 gnu C/C++ 工具生成的静态库与用于 arm 的 Microsoft C/C++ 工具一起使用
我有一个由 Linux 环境中的 ARM GNU 工具生成的静态库 (.a),并希望使用 Microsoft ARM 架构工具在 Windows 环境 (Visual Studio 2008) 中使用该库。有什么方法可以将 .a 静态库与 Microsoft 工具一起使用?
我没有源代码,这就是为什么我不能交叉编译 MS 编译器的源代码。
谢谢!
c - gcc-arm 编译器为同一个源文件生成不同的目标文件
为 ARM (windows) 使用 GCC 编译器:
arm-none-eabi-gcc.exe (Sourcery CodeBench Lite 2012.09-63) 4.7.2版本
我每编译相同的源文件约 5 次就会产生不同的目标文件。
使用了优化级别 3(积极),使用了编译器选项:
-O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fshort-wchar -fshort-enums -funsafe-math-optimizations -mvectorize-with-neon-quad
不同目标文件的转储(使用 objdump)显示汇编指令、寄存器和使用的地址有太多差异。
编译器以不同方式优化/编译完全相同的源文件并产生不同的目标文件是否正常?!它是编译器错误吗?
如何在不关闭积极优化的情况下避免这种行为?
编辑:目标文件差异片段:
object_file_dump_A:
object_file_dump_B:
编辑:
源代码 :
c - 静态测量 C 中方法所需的最大堆栈内存
我有大量用 C 语言编写的方法,分布在多个文件中,所有方法都创建局部变量(主要是结构实例)。在 Windows 上使用 ARM EABI GCC 编译器编译这些文件后,我尝试使用 objdump 检查 .o 目标文件。
我的问题是: 如何计算/检索方法使用的峰值堆栈内存?
这些方法都没有使用 malloc 分配任何动态分配的内存。所以,我希望这会更容易。
我需要这个,因为我需要比较每种方法在使用各种优化选项编译时使用的内存量。这是为了检查是否已执行任何本地内存优化。我也明白,对于一些局部变量,编译器可能会使用寄存器。但是,我只需要知道方法所需的最大堆栈内存是多少,或者是否有办法计算它。
gcc - arm-none-eabi-gcc:-march 选项 v/s -mcpu 选项
我一直在关注 atmel 的 j lynch 教程,用于为 at91sam7s256(微控制器)开发小程序。我做了一些修改并使用 arm-none-eabi 而不是 arm-elf(旧的)。默认情况下,我发现 gcc 编译假设 -march=armv4t 即使没有提及任何有关芯片的内容。如果我使用 -mcpu=arm7tdmi 会有多大区别?
即使在谷歌上搜索了很多,我也找不到详细的教程来解释所有可能的命令,如选项,包括单独的链接器选项、汇编器和 objcopy 选项,如 -MAP 等。
你能提供任何解释所有可能性的材料吗?
c++ - 在 ARM 上为 eCos 构建 C++ 应用程序
我正在寻找在 ARM 处理器上为 eCos 构建 C++ 应用程序。我的程序需要几个标准的 C++ 头文件,例如 vector、iostream、list、...
我的问题是:我怎样才能做到这一点?有没有人有为 eCos 构建和部署 C++ 应用程序的经验?
当我使用 arm-eabi-g++ 编译器编译应用程序时,出现以下错误
意味着不存在 C++ 向量库。
但是,arm-none-eabi-g++ 编译器确实包含这些标准头文件。我确实收到以下错误:
我可以为 eCos 使用 arm-none-eabi-g++ 编译器吗?如果是,我该如何解决这些错误?如果没有,我该怎么办?
提前谢谢了!