iOS可能检测到设备的当前处理器。 我正在处理的项目需要以编程方式检查处理器是ArmV7还是ArmV7。检测处理器ArmV7与ArmV7s。 Objective-C
1
A
回答
3
我不知道肯定,这将提供您想要的信息,但我会尝试sysctl
:
int32_t value = 0;
size_t length = sizeof(value);
sysctlbyname("hw.cpusubtype", &value, &length, NULL, 0);
亚型的值在mach/machine.h
。
/*
* ARM subtypes
*/
#define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
#define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
#define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
#define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
#define CPU_SUBTYPE_ARM_XSCALE ((cpu_subtype_t) 8)
#define CPU_SUBTYPE_ARM_V7 ((cpu_subtype_t) 9)
#define CPU_SUBTYPE_ARM_V7F ((cpu_subtype_t) 10) /* Cortex A9 */
#define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t) 12) /* Kirkwood40 */
0
我不知道任何API来检查这个,但你也许可以自己写一个,通过为相同的符号提供v7和v7s汇编程序实现,只需根据需要返回true或false。
假设当且仅当处理器支持v7时才会使用v7s实现,它应该可以工作。
0
这样:
sysctlbyname("hw.cpusubtype", &value, &length, NULL, 0);
是好的,但也有更简单的方法:
#include <mach-o/ldsyms.h>
int processorType = _mh_execute_header.cputype;
int processorSubtype = _mh_execute_header.cpusubtype;
虽然,这表明你是哪个CPU在编译时使用当前代码..
-2
你没有。
也就是说,在iOS上运行时以编程方式检测ARM体系结构版本支持不可取。这是我从苹果工程师那里得到的答案,当我特意提出这个问题时,并且给出了一些陷阱(例如,当你得到意想不到的价值时你会怎么做?),我可以相信他们。
(是的,有时是正确的答案是“我如何?”的问题是“你不知道。”)
相关问题
- 1. $(ARCHS_STANDARD_32_BIT)与armv6,armv7/armv7s与i386
- 2. i386,armv7和armv7s有什么区别?
- 3. XJOS 4.5下的iOS 6 PJSIP(armv7&armv7s)
- 4. iOS开源构建armv7,armv7s,arm64
- 5. 将ARMv7库链接到ARMv7s app
- 6. 用armv7和armv7s编译框架
- 7. 无法编译FFmpeg的对ARMv7和armv7s
- 8. arm64的ARMv7架构armv7s设置
- 9. 检测处理器数
- 10. 支持armv6,armv7和armv7s与最新的Dropbox框架构建
- 11. 注意检测与处理和最小
- 12. 使用预处理器检测iPhone 5
- 13. 检测IDLE处理器的数量ruby
- 14. 在预处理器中检测ARM-64?
- 15. 检测iPad的预处理器指令
- 16. 我可以在BlackBerry 10中使用Xcode编译的armv7/armv7s .so库吗?
- 17. 的ObjectiveC错误处理void函数
- 18. ObjectiveC与iOS中%d的不同处理方法
- 19. 处理节拍检测
- 20. 处理tictactoe检测按钮
- 21. 获取armv7s和ARMv7的错误,而归档发布
- 22. leptonica 1.69针对iOS(armv7,armv7s和arm64)的交叉编译
- 23. Xcode7 ios9不支持armv7和armv7s架构设备
- 24. 没有体系结构编译为(ARCHS =,VALID_ARCHS = armv7 armv7s)
- 25. 构建armv7,armv7s,arm64,i386和universal的ffmpeg iOS库
- 26. 如何将架构armv7,armv7s添加到{name} .framework?
- 27. 与处理器
- 28. IOS应用程序加载器显示错误捆绑,用armv7s和ARMv7
- 29. 无法在ARMv7处理器上运行mksdcard sdk工具Ubuntu 14.04
- 30. 苹果铛和sse指令形式armv7(移动处理器)
你检查这http://stackoverflow.com/questions/5567215/how-在运行时确定二进制图像体系结构 – Buntylm
@BuntyMadan:该答案显示了如何找到编译可执行文件或共享库的体系结构,而不是当前的处理器体系结构。 –
是的,感谢您的建议,但这需要动态检测。 –