【问题标题】:Can we have a compiler running in embedded device我们可以在嵌入式设备中运行编译器吗
【发布时间】:2016-11-25 22:37:39
【问题描述】:

这听起来可能很奇怪,但我想知道我们是否可以在嵌入式设备中安装编译器(比如说 imx6 上的 gcc 支持)。

【问题讨论】:

  • 您的问题的答案是yes
  • @rkosegi 你能提供同样的细节吗?会有帮助的

标签: embedded-linux


【解决方案1】:

当然,拥有目标工具并不少见,但也并非无足轻重。必须为目标体系结构交叉编译非本地(从主机角度来看)编译器。您没有提供任何详细信息,但也许您的构建系统可以为您构建目标工具。当然,您需要的不仅仅是编译器。您可能需要 make、autotools 等等。这取决于您要在目标上编译的内容。

您最好的选择是使用交叉编译器环境获得一些熟练程度。如果您还没有,您可以查看 Yocto 项目。它支持 i.mx6(以及更多),并且可能提供了在您的板上获取目标工具的途径。

祝你好运!

【讨论】:

  • “拥有目标工具并不少见”——对于业余爱好者和他们的 SBC(例如 RPi)来说也许是这样,但对于现实世界来说,这是一个虚假的说法。
  • @challinan 我在 ubuntu 16.04 LTS(在 X86_64 架构上)机器上有我的交叉编译器,我在其中为目标 i.mx6 构建我的应用程序,然后我将它们复制到目标并开始执行(当然,这一切都是在操作系统启动后)。所以,我的问题是我们能否在目标板上拥有一套完整的工具和交叉编译器,以便我可以从我的目标编译和执行。注意:最初我会将代码文件复制到需要构建的目标,因为我不确定 i.mx6 的文本编辑器支持
  • 答案是肯定的,你可以,但你不应该。当您已经能够在主机上为您的目标编译时,在目标上编译没有多大意义。
  • @AlexandreBelloni,我有兴趣在目标上安装一个编译器(在我的情况下为 i.MX6),因为我在 i.MX6 中没有任何内存限制,如果我能获得支持在目标上,我可以避免在主机上构建应用程序,然后复制到 MMC 并复制到目标然后运行的循环。您能否向我指出任何资源/一些关于我们如何在目标上获得编译器支持的详细解释会有所帮助。谢谢
【解决方案2】:

对于arm arch,很容易获得目标编译器,linaro项目的l​​inaro ubuntu将为arm arch提供完整的解决方案,它可以在你的目标上提供GNOME桌面、工具链和信息工具。

您可以从以下链接获取更多信息:

https://wiki.linaro.org/Platform/DevPlatform/Ubuntu

【讨论】:

    【解决方案3】:

    是的,应该很简单。你的机器上有什么版本的交叉编译器,从这里下载匹配的 gcc 编译器https://ftp.gnu.org/gnu/gcc/

    现在您要做的是使用您已有的交叉编译器交叉编译您下载的 GCC。

    以下是编译 4.7.4 的示例,注意:根据您的平台替换 HOST 和 BUILD:

       ./contrib/download_prerequisites
    
       cd ..
    
       mkdir objdir
       cd objdir
    
       ../gcc-4.7.4/configure --build=$BUILD \
                   --host=$HOST \
                   --target=$HOST \
                   --prefix=/usr \
                   --disable-nls \
                   --enable-languages=c,c++ \
                   --with-float=hard 
    
       make -j $JOBS
    
       make DESTDIR=<path_where_to_install> install
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2016-11-14
      • 2013-05-25
      • 1970-01-01
      相关资源
      最近更新 更多