我有一个可以在32位和64位运行的二进制文件,它可以加载动态包以用于繁琐的目的。但是,默认情况下它运行在64位环境中;所以如果我点击一个只有32位的包,dlopen
就会失败。
事先检查这个很容易,所以我真正需要的是一种选择是以32位还是64位启动它的方法。我怎么能以编程方式做到这一点?我对Snow Leopard可能支持的任何事情持开放态度。
答案 0 :(得分:3)
除了@GWW所写的内容之外,如果您真的想以编程方式执行此操作,可以使用posix_spawnattr_setbinpref_np设置首选CPU类型,然后使用posix_spawn。
CPU类型由cpu_type_t
指定,我相信在#include <mach/machine.h>
中定义。但是包含#include <mach-o/arch.h>
可能更安全。请参阅arch (3) manpage。
答案 1 :(得分:1)
这对我来说可以在32位/ 64位
中启动pythonarch -i386 python
Python 2.7 (r27:82500, Nov 10 2010, 22:46:43)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.maxint
2147483647
arch -x86_64 python
Python 2.7 (r27:82500, Nov 10 2010, 22:46:43)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.maxint
9223372036854775807