如何在 32 位或 64 位环境中以编程方式启动程序?
我有一个可以在 32 位和 64 位下运行的二进制文件,它加载动态包以用于摆弄目的。但是,默认情况下它运行在 64 位环境下;因此,如果我只使用 32 位捆绑包,dlopen
就会失败。
事先检查这一点很容易,所以我真正需要的是一种选择是以 32 位还是 64 位启动它的方法。我怎样才能以编程方式做到这一点?我对雪豹可能支持的任何事情都持开放态度。
I have a binary that can be run in both 32 and 64 bits, that loads dynamic bundles for fiddling purposes. However, by default it runs on the 64 bits environment; so if I hit a 32-bits only bundle, dlopen
fails.
It's easy to check for this beforehand, so all I really need is a way to choose whether to launch it in 32 bits or 64 bits. How can I programmatically do that? I'm open to anything Snow Leopard might support.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除了 @GWW 写的之外,如果您确实想以编程方式执行此操作,您可以使用 posix_spawnattr_setbinpref_np 设置首选 CPU 类型,然后使用 posix_spawn。
CPU类型由
cpu_type_t
指定,我相信它是在#include
中定义的。但包含#include
可能更安全。请参阅 arch (3) 手册页。In addition to what @GWW wrote, if you really want to do this programmatically, you can use posix_spawnattr_setbinpref_np to set the preferred CPU type and then use posix_spawn.
The CPU type is specified by
cpu_type_t
, which I believe is defined in#include <mach/machine.h>
. But it may be safer to include#include <mach-o/arch.h>
. See arch (3) manpage.这对我在 32 位/64 位启动 python 很有用
This worked for me to launch python in 32-bit / 64-bit