2011-03-11 122 views
3

我有一个二进制文件,可以运行在32位和64位,加载动态包的小提琴的目的。但是,默认情况下,它在64位环境下运行;所以如果我点击32位唯一捆绑,dlopen失败。如何以编程方式在32位或64位环境中启动程序?

事先很容易检查,所以我真正需要的是一种选择是以32位还是64位启动的方式。我如何以编程方式做到这一点?我愿意接受Snow Leopard可能支持的任何内容。

回答

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

+0

它由''('#include'图中的某处)定义,并且我已经包含它。 – zneak 2011-03-11 04:55:31

1

这个工作对我来说,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 
+0

看起来不错。谢谢。 – zneak 2011-03-11 04:37:55

相关问题