我有一个二进制文件,可以运行在32位和64位,加载动态包的小提琴的目的。但是,默认情况下,它在64位环境下运行;所以如果我点击32位唯一捆绑,dlopen
失败。如何以编程方式在32位或64位环境中启动程序?
事先很容易检查,所以我真正需要的是一种选择是以32位还是64位启动的方式。我如何以编程方式做到这一点?我愿意接受Snow Leopard可能支持的任何内容。
我有一个二进制文件,可以运行在32位和64位,加载动态包的小提琴的目的。但是,默认情况下,它在64位环境下运行;所以如果我点击32位唯一捆绑,dlopen
失败。如何以编程方式在32位或64位环境中启动程序?
事先很容易检查,所以我真正需要的是一种选择是以32位还是64位启动的方式。我如何以编程方式做到这一点?我愿意接受Snow Leopard可能支持的任何内容。
除了什么@GWW写道推出蟒蛇,如果你真的想以编程方式做到这一点,你可以用posix_spawnattr_setbinpref_np设置首选的CPU类型,然后使用posix_spawn。
CPU类型由cpu_type_t
指定,我相信这是在#include <mach/machine.h>
中定义的。但是包括#include <mach-o/arch.h>
可能会更安全。请参阅arch (3) manpage。
这个工作对我来说,32位/ 64位
arch -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
看起来不错。谢谢。 – zneak 2011-03-11 04:37:55
它由''('#include'图中的某处)定义,并且我已经包含它。 –
zneak
2011-03-11 04:55:31