干杯,
在公司,我们正在创建游戏的端口,我们需要编译PythonOgre,这是Python的Ogre3d包装器。这是一大块代码,特别是生成的包装器代码。我们有一台配备1GB RAM的Mac Mini。
我们已经构建了i386版本。由于我们只有1GB的RAM,因此我们强制构建系统只使用一个内核;第二个进程同时运行,进入了虚拟内存。
现在,我们需要生成通用二进制文件,因为发布者坚持支持PPC。为了便于构建通用二进制文件,我们在编译包装器代码时修改了CFLAGS
和CXXFLAGS
以包含-arch i386 -arch ppc
(Ogre3d本身似乎已经是通用二进制文件)。
但是,Apple在创建通用二进制文件时决定使用这两个内核,这导致系统翻转并死亡。 (好吧,无论如何,爬行的CPU使用率为0.9-1.4%。)虽然我们很欣赏这一点,但在1GB Mac Mini上,这完全阻碍了我们的开发。
除了获得新的构建机器,放弃PPC支持并生成仅PPC构建之外,我们唯一的办法是阻止GCC产生第二个同步过程。
我们将如何解决这个问题?
答案 0 :(得分:2)
我已经检查了Apple的GCC驱动程序的源代码(支持那些-arch
选项并运行子进程的驱动程序),并且没有可供选择的选项或环境变量。
我看到的唯一选择是:
driverdriver.c
,以便按顺序(而不是并行)启动进程lipo
我希望这有帮助!
答案 1 :(得分:1)
刚关闭一个核心吗?显然,安装Apple Developer Tools(XCode等)会为您提供一个处理器系统首选项窗格,允许您关闭一个核心。我试图测试这个,但XCode安装失败了......
编辑:我知道这是不久前的,但我只想到了一些东西。为什么不单独使用-march = i386和-march = ppc构建,然后使用lipo组合二进制文件?