我想知道有没有从ndk-build输出程序集的选项? 我尝试在LOCAL_CFLAGS中放入-save-temp但是无法构建。它告诉我这是一个无法识别的选项。想知道谷歌是否在i686-android-linux中将其删除,就像在此链接中声明的那样http://code.google.com/p/vs-android/issues/detail?id=47
答案 0 :(得分:1)
我发现有两种方法可以做到这一点。
LOCAL_CFLAGS += -save-temps
请注意单个破折号和拼写(不是问题中提到的save-temp)。这些文件将保存到构建的工作目录中,通常是顶级项目文件夹。虽然这使文件更容易找到,但如果您在不同的文件夹中有多个具有相同名称的文件,或者您正在为多个ABI构建(尽管您可以在Application.mk中限制它),则可能会出现问题。
替代方法使用LOCAL_FILTER_ASM,它将汇编文件放在目标文件旁边,这些文件与源目录布局相匹配,并为目标不同的ABI使用不同的路径。
LOCAL_FILTER_ASM := cp
设置此变量会首先使NDK构建输出到程序集,然后运行命令以“过滤”编译器的程序集输出,然后组合过滤后的输出。您需要将其设置为接受表示源路径和目标路径的两个参数的命令。值得庆幸的是cp
命令已经接受了源路径和目标路径,因此可以直接用作无操作过滤器。
在构建之后,您可以在obj / local / [abi] / objs / [module] / __ / path-to-file.s中找到您的程序集文件。
由于使用了LOCAL_FILTER_ASM功能,还会有另一个带有“.filtered.s”扩展名的文件副本,但这不会造成任何伤害。
答案 1 :(得分:0)
原始解决方法:将-S放入LOCAL_CFLAGS;运行然后ndk-build将失败,但检查./obj/local/armeabi/objs-debug/中创建的.o文件,您可能会发现它包含程序集: - )