如何在 32 位或 64 位环境中以编程方式启动程序?

发布于 2024-10-21 12:55:14 字数 203 浏览 2 评论 0原文

我有一个可以在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷夜 2024-10-28 12:55:14

除了 @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.

抹茶夏天i‖ 2024-10-28 12:55:14

这对我在 32 位/64 位启动 python 很有用

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

This worked for me to launch python in 32-bit / 64-bit

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文