问题标签 [gnu-toolchain]
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.
cortex-m3 - 如何为 cortex m3 使用预构建的工具链
我已经下载了以下用于 cortex m3 的 gnu 工具链并将其解压缩,但我不明白如何使用它-> http://www.codesourcery.com/sgpp/lite/arm/portal/package6503/public/arm-uclinuxeabi/ arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2
我的电脑是windows 7,是不是需要linux作为主机??
c - 使用内联函数保持与汇编的兼容性
我正在编写一些头文件,C 代码和程序集都可以访问这些头文件。为此,汇编代码使用 C 预处理器进行预处理。
inline
问题是我在这些头文件中有很多功能。汇编器无法处理函数,这些函数不是目标文件中的符号(与static inline
函数一样),所以我不能使用它们。我已经阅读了这篇文章和这篇非常有价值的文章,并且现在已经掌握了如何使用extern
和static
结合使用inline
,但我不确定如何让C 代码和程序集都inline
可以访问函数。
我目前的方法是在头文件中编写inline
函数(使用> = GNU99,内-O3
联函数,任何其他调用该函数的外部定义,我需要明确定义)并在实现文件中编写外部定义。C 代码包括用 编译的头文件(inline
函数)-O3
,因此使用内联版本。汇编代码使用外部定义。
问题:
汇编代码只能调用函数,内联目前是不可能的。无论如何,汇编代码可以使用内联吗?我的意思是在
.S
文件中,而不是内联汇编。extern inline
与我当前的方法一样好,但它归结为只有一个定义(外部定义是自动发出的),因此它不能分为头文件和源文件,这对于使其可访问 C 代码(头文件)和组装(来源)。有没有更好的方法来实现我一直在尝试做的事情?
c - 如何确定处理标头的次数?
目前,我的 C 代码库编译速度相对较快。但是,我想利用一种明智的方法来减少重新处理给定标头的次数。
我想能够看到引用计数会帮助我这样做。我该怎么做?
gcc - Gcc、binutils 和 glibc 的最小支持版本?
我如何知道 gcc 或 binutils 的 glibc 的最小版本是什么?
问候。
gcc - '(' 之前的 GCC 错误 unqualified-id
虽然我正在尝试构建 gcc 本身。我遇到了这个奇怪的错误。
错误在 aarch64.h
而且,我在编译之前编辑了一些标题代码
原始标题代码:
我将其更改为:
而且我不知道它是否有任何区别(颜色变化),但在编辑代码之前,整个代码看起来是紫色的。编辑代码后,下面的行if (!flag_fentry)
变成黑色
我挣扎了两天没有成功
如果有人帮助我,我真的很感激。
谢谢问候
c++ - 声明抽象类(纯虚方法)大幅增加二进制大小
故事如下:我正在使用 AC6 Toolpack 在 Linux 中为 ARM Cortex-M0 处理器开发 C++ 软件。在我使用 Keil(在 Windows 中)(拥有自己的工具链)之前,我已经迁移到 GNU-toolchain ((GNU Tools for ARM Embedded Processors) 5.2.1) 。我意识到的第一件事是;二进制文件大小大幅增加。我已经测试了每个编译器优化(链接时间优化除外,它在内联汇编中给出错误,不是问题的一部分,但可能与答案有关)。然后开始使用任何可用的工具检查可执行文件(elf 文件不是 bin,gnu 生成两者):objdump、readelf、nm。我发现一些导致尺寸增加的符号,重要的是:' d_print_comp_inner
',' d_exprlist
','d_template_args
'。但不知道是什么导致这些函数以二进制形式出现。(我使用了最少的库:nano newlib)。长话短说,我开始一一消除代码以找到罪魁祸首。最后是抽象方法声明!
定义函数为
代替
添加 45 KB 和我提到的符号。这是源代码的唯一变化。基类中存在空定义。请注意:方法仍然是虚拟的并且在子类中被覆盖
没有抽象类的大小输出:
抽象类的大小输出:
在这里,当方法是抽象的时候出现的符号和它们的大小,消除了两个版本中出现的那些。(nm
使用工具。不完整列表,大小> = 0x60的列表)
一些我熟悉的名称(例如 printf、flush、malloc、fputs 等)在源代码中甚至都没有提及。
任何人都知道是什么导致了这种行为?
更新:
我已经用 flag 禁用了异常--noexception
,所以我没有考虑它。事实证明,在这里提到这一点与回答很好有关。
更新 2: 如果您跟踪答案中的链接,这是解释这一切的最全面的网站。
arm - ARM GNU toolcahins 混乱
我总是很困惑,然后是关于 ARM 架构工具链。我总是看到有两个对立面:ARM ltd。官方和 GNU 社区。ARM 提供官方工具,而 GNU 社区提供免费和开源的灵活和更通用的解决方案。我想开始在我的工作中使用 GNU 自由和开放软件。但是这种困惑让我迷失了从哪里开始。哪些 GNU 工具链支持哪些架构等等。M、A、R 型材?选择什么?我想摆脱“ARM ltd. 做事的方式”。您能否提供支持所有 ARM 架构的工具的官方 GNU 资源和链接?我应该检查哪些主要项目,要下载哪些工具链?
linux - gcc 可以在没有交叉编译的情况下为 Arm 生成二进制文件吗
我们可以配置在 intel x64 架构上运行的 gcc 来为 ARM 芯片生成二进制文件,只需将一些标志传递给 gcc 而不是使用交叉编译器。
c - 无法使用 Openwrt 工具链构建静态二进制文件:未定义对 _Unwind_Resume 和 __gcc_personality_v0 的引用
我无法使用 openwrt 工具链构建静态二进制文件。
我的主机 gcc 是 Debian 8 上的 4.9.2 版本。我使用以下配置构建了 openwrt 工具链:
GCC 编译器版本:具有 Linaro 增强功能的 gcc 4.8.x
C 库实现:使用 (e)glibc
(e)glibc 版本:glibc 2.21
工具链信息:
这里提到的答案没有帮助: https ://stackoverflow.com/a/22774664/879142
添加 --enable-static 作为附加 gcc 配置选项也无济于事。
正如在 Internet 上其他地方发现的那样,将 -lgcc_eh 添加到链接器标志也无济于事。
c - GNU ARM 嵌入式工具链安装问题
我正在尝试安装 GNU ARM Embedded Toolchain,以便将其与 Ubuntu 机器中的 Sublime Text 3 集成。
我按照以下步骤操作,但出现错误:
1.从“ https://launchpad.net/gcc-arm-embedded/+downloadGo ”下载数据包,然后将数据包解压缩到主目录:
2.测试文件是否存在,权限是否正常。
3.测试是否有效:
但我得到了这个错误:
我怎样才能解决这个问题?我的用户是“fabio”,但文件的所有者是 root。