0

在我的 iPhone 项目中,我有一个名为 arm_asm_stub.S 的程序集文件,其中包含我需要从项目中另一个名为 main.c 的文件中调用的方法。当我不在我的 main.c 文件顶部 #include 文件时,我没有收到任何构建错误,但我确实收到了链接器错误:

Undefined symbols for architecture armv7:
  "_execute_arm_translate", referenced from:
      _iphone_main in main.o

但是,当我尝试在 main.c 的顶部#include 文件时,Xcode 使用 Clang 编译 arm_asm_stub.S,所以我得到了一堆错误,当我不 #include 文件时不会出现这些错误如:

unknown type name 'ldr'
expected identifier or '('
use of undeclared identifier 'sp'

Xcode 如何与项目的其余部分分开编译这个文件?

4

1 回答 1

3

您只需将.S文件添加到项目中,构建系统就会自动组装它。不过要小心这些符号。所有的 C 函数都有一个编译器在它们前面加上下划线,因此您的汇编语言例程标签需要在前面有一个下划线,以便 C 代码能够调用它。

于 2012-05-30T14:57:59.540 回答