与iPhone项目一起编译程序集(.S)文件

时间:2012-05-30 01:19:50

标签: iphone c xcode assembly clang

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

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

然而,当我尝试#include main.c顶部的文件时,Xcode使用Clang来编译arm_asm_stub.S然后我得到了一堆错误,那些在我没有时出现的错误#包括如下文件:

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

Xcode如何分别编译这个文件而不是项目的其余部分?

1 个答案:

答案 0 :(得分:2)

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