Создание универсальных двоичных файлов на Mac – принудительный процесс одиночного компилятора

Ура,

в компании мы создаем порт наших игр, и нам нужно скомпилировать PythonOgre , оболочку Ogre3d для Python. Это огромный кусок кода, особенно сгенерированный код оболочки. У нас есть Mac Mini с 1 ГБ оперативной памяти.

Мы построили версию i386. Поскольку у нас только 1 ГБ ОЗУ, мы вынудили систему сборки использовать только одно ядро; второй процесс в то же время занял приятное путешествие в виртуальную память.

Теперь нам нужно создать универсальные двоичные файлы, потому что издатель настаивает на поддержке PPC. Чтобы облегчить создание универсальных двоичных файлов, мы модифицировали CFLAGS и CXXFLAGS для включения -arch i386 -arch ppc при компиляции кода оболочки (сам Ogre3d уже представляется универсальным двоичным кодом).

Тем не менее, Apple решила использовать оба ядра при создании универсального двоичного кода, и это заставило систему опрокинуться и умереть. (Ну, сканирование с использованием процессора 0.9-1.4%, в любом случае.) Хотя обычно мы это оценим, на 1 ГБ Mac Mini это полностью блокирует наше развитие.

Помимо получения новой машины для сборки, отказа от поддержки PPC и создания сборки с использованием PPC, единственным средством, которое мы имеем, является блокирование нереста второго поколения GCC.

Как мы будем это делать?

2 Solutions collect form web for “Создание универсальных двоичных файлов на Mac – принудительный процесс одиночного компилятора”

Я проверил источник драйвера GCC от Apple (тот, который поддерживает эти параметры -arch и запускает дочерние процессы), и нет никакой переменной или переменной среды, которую вы можете выбрать.

Единственные варианты, которые я вижу вам, – это:

  • скачайте драйвер Apple (например, оттуда , конец страницы) и измените файл driverdriver.c чтобы процессы запускались последовательно (а не параллельно)
  • делать отдельные сборки i386 и powerpc и присоединяться к конечным объектам сборки (исполняемые файлы, разделяемые библиотеки и т. д.) с использованием lipo

Надеюсь, это поможет!

Будет ли просто отключать одно ядро? По-видимому, установка Apple Developer Tools (XCode и др.) Дает вам панель предпочтений системы процессора, позволяющую отключить одно ядро. Я пытался проверить это, но по какой-то причине установка XCode не удалась …

EDIT: Я знаю, что это было давно, но я только что подумал. Почему бы не построить с -march = i386 и -march = ppc отдельно, а затем объединить двоичные файлы с помощью lipo?

Interesting Posts

Имеет ли смысл использовать как countvectorizer, так и tfidfvectorizer в качестве векторов объектов для кластеризации текста с помощью KMeans?

Может ли Scrapy заменить на pyspider?

Сравнение дат и времени в разных форматах с использованием Python

как проверить, что два сегмента массивов numpy одинаковы (или перекрываются)?

NameError: имя 'reload' не определено

Почему Django's Meta – это класс старого стиля?

Как вернуть значение, когда @ click.option используется для передачи аргумента командной строки функции?

Какие допустимые варианты использования для утверждения `assert` python?

Как получить текущее имя ноутбука IPython

Gtk + 3 Gdk Pixbuf.new_from_data дает ошибку «Ошибка сегментации (сбрасывание ядра)» 139

Python Pygame не отображает изображения правильно

Прерывистая ошибка потока Python, «основной поток не находится в основном цикле»

Тяжелое использование Python в Google

Pretty Printing a pandas dataframe

Как получить имена таблиц в базе данных mysql с помощью Python и MySQLdb?

Python - лучший язык программирования в мире.