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

在我的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所以我得到了一堆错误,当我不#include文件时出现错误如:

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

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

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