【问题标题】:How would one compile a program for the Coldfire toolchain?如何为 Coldfire 工具链编译程序?
【发布时间】:2012-09-30 05:01:00
【问题描述】:

我正在尝试编译一个简单的 hello world 应用程序以在 uCLinux (2.4) 上运行,该应用程序运行在带有 Freescale Coldfire (MCF5280C) 处理器的板上......我不太确定在这里做什么.

我知道我需要使用来自飞思卡尔的正确版本/工具进行编译以针对此硬件,因此我下载并安装了 Coldfire 工具链并验证我拥有的工具链适用于我的目标:

mike@linux-4puc:/usr/local/m68k-elf/bin> ./gcc -v
Reading specs from /usr/local/lib/gcc-lib/m68k-elf/2.95.3/specs
gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)

我尝试了一个简单的gcc "file" 类型命令:

mike@linux-4puc:/home/mike> /usr/local/m68k-elf/bin/gcc test.c
/usr/local/m68k-elf/bin/ld.real: cannot open crt0.o: No such file or directory
collect2: ld returned 1 exit status

这根本不起作用..所以它显然比这更复杂。输出几乎看起来像是要我在使用它之前构建工具链?以前有人做过吗?不知道我需要做什么,或者我是否只需要一些标志。

【问题讨论】:

  • gcc --sysroot=/usr/local/m68k-elf test.c
  • 仅供参考,如果这确实有效,则可能意味着某些设置不正确,因为您不需要添加 --sysroot 参数。话虽如此,测试是个好主意。

标签: c linux cross-compiling toolchain coldfire


【解决方案1】:

您从哪里获得飞思卡尔工具链?我查看了他们的网站,似乎只有第三方提供了 C++ 交叉编译器。在我从 NetBurner 获得的工具链中(用于他们的硬件),crt0.o 文件存在于 gcc-m68k\m68k-elf\lib 目录下。

【讨论】:

    【解决方案2】:

    您也可以尝试查看是否有一个名为m68k-elf-gcc 的命令或类似的东西。这是交叉编译器的常用命名。

    至于您的问题,听起来您的编译器设置有问题。 crt0.o 是包含 C 运行时设置代码的目标文件。如果设置正确,链接器(实际上是什么给出了错误)应该知道这个文件在哪里。

    安装后,您应该在最后一步运行 make install,而自 make 步骤以来没有修改任何内容。配置步骤将根据应该安装的路径设置某些变量等。

    【讨论】:

    • 是的,那个也存在,相同的版本信息被转储并且运行它的相同问题。所以也许你对某些设置不正确是正确的。
    • @Mike 是的,我怀疑它是否能解决你的问题,它只是更容易使用(不需要输入路径)。
    • @Mike 通常使用 gcc 编译器,您必须将所有组件安装在它们构建的路径中,或者您必须提供许多选项来告诉它在哪里可以找到诸如库之类的东西(和 crt0.o,它是设置对main() 的调用的初始入口点)。您也许可以从您的硬件/工具供应商那里找到详细信息。
    • m68k-elf-gcc 是正确的答案,一旦它设置了正确的选项。包括我的-m5282
    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2021-08-30
    • 2016-08-02
    • 2019-08-17
    • 2016-01-01
    • 2021-02-13
    相关资源
    最近更新 更多