在我的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如何分别编译这个文件而不是项目的其余部分?
答案 0 :(得分:2)
您应该只将.S
文件添加到项目中,构建系统将自动组装它。但要小心这些符号。所有C函数都有一个编译器前置下划线,因此汇编语言例程标签前面需要一个下划线,以便C代码可以调用它。