在Mac上构建通用二进制文件强制单编译器子进程

2024-09-29 19:21:03 发布

您现在位置:Python中文网/ 问答频道 /正文

干杯

在公司,我们正在为我们的游戏创建一个端口,我们需要编译PythonOgre,一个面向Python的Ogre3d包装器。这是一个巨大的代码块,尤其是生成的包装器代码。我们有一个带1GB内存的Mac Mini。在

我们已经建立了i386版本。由于我们只有1GB的RAM,所以我们强制构建系统只使用一个内核;同时运行的第二个进程在虚拟内存中进行了一次很好的旅行。在

publisher坚持要制作二进制文件,因为我们现在需要支持PPC。为了便于构建通用二进制文件,我们修改了CFLAGS和{},以便在编译包装器代码时包含{}(Ogre3d本身似乎已经是一个通用二进制文件)。在

然而,苹果决定在创建通用二进制时同时使用两个核心,这导致了系统翻滚和死亡。(好吧,不管怎样,在0.9-1.4%的CPU使用率下爬行)虽然通常我们会很欣赏这一点,但在1GB的Mac Mini上,这完全阻碍了我们的开发。在

除了获得一个新的构建机器,放弃对PPC的支持并生成一个只支持PPC的构建之外,我们唯一的办法就是阻止GCC产生第二个同步进程。在

我们该怎么做呢?在


Tags: 文件端口代码游戏面向进程mac系统
2条回答

我已经检查了Apple的GCC驱动程序(支持那些-arch选项并运行子进程的驱动程序)的源代码,没有任何选项或环境变量可供选择。在

我认为留给你的唯一选择是:

  • 下载Apple驱动程序(例如从页面末尾的there)并修改文件driverdriver.c,以便进程按顺序启动(而不是并行启动)
  • 分离i386和powerpc构建,并使用lipo连接最终构建对象(可执行文件、共享库等)

我希望这有帮助!在

关掉一个核心就行吗?显然,安装苹果开发者工具(XCode等)会给你一个处理器系统偏好面板,允许你关闭一个核心。我试着测试这个,但是XCode安装由于某种原因失败了。。。在

编辑:我知道这是一段时间以前的事,但我只是想了些事。为什么不分别使用-march=i386和-march=ppc构建,然后使用lipo组合二进制文件呢?在

相关问题 更多 >

    热门问题