【问题标题】:What is wrong with my cross compiler?我的交叉编译器有什么问题?
【发布时间】:2014-07-12 15:06:16
【问题描述】:

我正在尝试编译一个可以在我的 mac 上交叉编译的基本程序。我正在运行 Mac OS X Mavericks。我的交叉编译器是 arm-elf-gcc-4.7.3。我写了一个简单的测试程序,如下所示:

int main()
{
    ;
    return 0;
}

当我运行 /opt/local/bin/arm-elf-gcc-4.7.3 -o test test.c 时,我收到这些错误。

test.c:4:Unknown pseudo-op: .global
test.c:4:Rest of line ignored. 1st junk character valued 109 (m).
test.c:5:Unknown pseudo-op: .type
test.c:5:Rest of line ignored. 1st junk character valued 109 (m).
test.c:7:Junk character 64 (@).
test.c:7:Rest of line ignored. 1st junk character valued 32 ( ).
test.c:8:Junk character 64 (@).
test.c:8:Rest of line ignored. 1st junk character valued 32 ( ).
test.c:9:Junk character 64 (@).
test.c:9:Rest of line ignored. 1st junk character valued 32 ( ).
test.c:10:invalid char '[' beginning operand 2 `[sp'
test.c:11:too many memory references for `add'
test.c:12:expecting operand after ','; got nothing
test.c:13:too many memory references for `mov'
test.c:14:too many memory references for `add'
test.c:15:no such instruction: `ldmfd sp!, {fp}'
test.c:16:no such instruction: `bx lr'
test.c:17:Unknown pseudo-op: .size

我的交叉编译器出了什么问题?

【问题讨论】:

  • 您希望通过 ; ?
  • 看起来 C 编译器被赋予汇编器作为 C 源代码并且不太喜欢它。你用来编译代码的命令行是什么?
  • 我正在尝试通过确保这个最基本的程序在我尝试编译我更重的代码之前编译来进行完整性检查。
  • 我使用/opt/local/bin/arm-elf-gcc-4.7.3 -o test test.c 编译
  • 尝试传递 gcc 的 '-v' 选项,它会准确显示它在尝试编译代码时运行的内容。

标签: c gcc compilation cross-compiling


【解决方案1】:

编译器使用了错误的汇编器。我必须用 -B/opt/local/arm-elf- 指定前缀

【讨论】:

  • 虽然您从技术上回答了这个问题,但最好有一个答案来解释为什么交叉编译器可能使用了错误的汇编器以及如何处理任何试图构建交叉编译器的人的好处。有人知道吗?
【解决方案2】:

读起来就像编译器吐出汇编器无法读取的程序集。检查不匹配。

【讨论】:

  • 我认为可能是因为交叉编译器使用了错误的汇编器。有没有办法指定使用不同的汇编程序?
猜你喜欢
  • 2018-09-13
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多