我有一個二進制文件,可以運行在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