【问题标题】:Choosing a compact c/c++ compiler for ARM based Embedded Linux System为基于 ARM 的嵌入式 Linux 系统选择一个紧凑的 c/c++ 编译器
【发布时间】:2015-01-22 15:49:43
【问题描述】:

我正在研究运行 Linux 的基于 ARM cortex A7 的嵌入式系统。我正在寻找尺寸紧凑且可靠的 c/c++ 编译器(因为 GCC 大约为 100 mb)。我入围了一些 SDCC、TCC、OTCC、Digital Mars、NWCC、LCC、Small C、便携式 C 编译器。

我想知道编译器是否依赖于操作系统或硬件,以及我应该如何着手开始精简列表。我不是专家,我正在学习 Linux 系统和嵌入式环境。如果您认为我提出了错误的问题或方向错误,请告诉我。

谢谢你

注意

我的 linux(笔记本电脑)系统上已经有交叉编译器。我只使用它来编译要加载的程序。但是嵌入式系统应该能够加载我们设计的特定语言,我希望将该语言转换为等效的 C 代码并运行它。我尝试用 c 编写自己的解释器,它接受其他语言的代码并解析并执行,但速度有点慢,我在(直接用)C 中尝试了相同的指令,结果令人满意。

编辑: 我最终在我的系统上使用 g++ 来编译代码,因为系统的主要功能是使用生成的代码。

【问题讨论】:

  • 为什么需要小型编译器?您是否打算在嵌入式目标本身上运行它?为什么你的嵌入式系统需要编译东西?
  • 嵌入式系统应该能够加载我们设计的特定语言,我希望将该语言转换为等效的 C 代码。我尝试编写自己的解释器,但速度有点慢,我在 C 中尝试了相同的指令,结果令人满意。这就是为什么。
  • 也许您最好使用专为嵌入而设计的轻量级脚本语言,例如 LUA?
  • 我尝试了 LUA,结果令人满意,但我计划在做出决定之前考虑并比较所有可能的选项。

标签: linux embedded


【解决方案1】:

通常,在处理嵌入式系统时,最好交叉编译和发送二进制文件,而不是直接在设备上编译。尽管一开始设置工具链可能会花费您一些时间,但它肯定会为您带来构建时间的回报。

有几个预构建的 Linaro GCC 是交叉编译器,(通常)x86 linux 作为主机,arm linux 作为目标平台。这样,您不必担心编译器的大小。

【讨论】:

  • 嵌入式系统应该能够加载我们设计的特定语言,我希望将该语言转换为等效的 C 代码。我尝试编写自己的解释器,但速度有点慢,我在 C 中尝试了相同的指令,结果令人满意。这就是为什么我需要在嵌入式系统上编译器
  • 我认为你应该定义一种更轻量级的语言。
  • @dwelch 我没退出明白,请你解释一下。
  • 据我了解,您应该编写和交叉编译解释器并将其二进制文件发送到嵌入式系统。在那里,你用它来阅读你的语言脚本,甚至在那里编译。关键是不需要嵌入 C 编译器。如果我误解了什么,请告诉我。
  • 看到以上所有内容,如果您需要像 C 编译器这样复杂的东西进入一个没有空间的系统,这听起来像是把自己画到了一个角落里。您提到的大多数编译器根本不起作用,那些听起来像您没有空间的编译器。您是说您想基本上从一种语言编译为 C 然后下载它,您不妨一直编译它,而不是将其过度复杂化为要重新编译的语言翻译。我假设您可能没有空间将定义的语言设为汇编语言
猜你喜欢
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2010-10-28
  • 1970-01-01
  • 2016-10-18
  • 2018-04-06
相关资源
最近更新 更多