2015-08-29 13 views
0

Это связано с Git 2.4.8 built from kernel.org sources and missing HTTP/HTTPS helpers.Причина изменения от `-arch ppc` до` -arch ppc7400`?

Я нашел, что библиотека cURL была эффективно сконфигурирована с -arch ppc -arch ppc64, но жирная библиотека, которая была построена, имеет архитектуры -arch ppc7400 -arch ppc64. Это вызывает сбой Git configure/link, поэтому настройка Git [молча] отменяет cURL, который [молча] удаляет HTTP/HTTPS-помощники.

Действительно странно, что остальные восемь или около того зависимых библиотек хороши при построении с использованием тех же шагов. Зависимые библиотеки имеют как -arch ppc -arch ppc64 в соответствии с инструкциями. Другие библиотеки включают Zlib, Bzip, iConv, PCRE и OpenSSL.

Я скопировал источники cURL с $ grep -IR -i "\-arch ppc7400" *, $ grep -IR -i "ppc7400" * и $ grep -IR -i "\-arch" *, но я не могу найти источник изменений.

Что может быть причиной изменения с -arch ppc по -arch ppc7400?

ответ

3

Это не git- или завиток, а на самом деле является преднамеренной особенностью компилятора. Компилятор заметил, что вы работаете на OS X 10.5 Leopard. ppc7400 - это архитектура процессора PowerPC G4, который является минимальным процессором, необходимым для запуска Leopard, поэтому компилятор изменил ваш запрос на -arch ppc на -arch ppc7400, чтобы генерировать лучший код, который будет работать на минимально поддерживаемом компьютере. Если вы хотите поддерживать Mac с более ранним процессором G3, то это также означает, что вам нужно будет поддерживать работу на OS X 10.4, которая является последней версией OS X для поддержки G3. Для этого передайте флаг -mmacosx-version-min=10.4 компилятору или установите переменную окружения MACOSX_DEPLOYMENT_TARGET в 10.4.

Я заметил, что перевод с ppc на ppc7400 происходит только в том случае, если вы строите универсальный (т. Е. Если вы одновременно создаете другую архитектуру). Я не уверен, почему это не делает это, только строя для одной арки.

+0

* Действительно * странная вещь - это восемь (или около того) других зависимых библиотек, которые строят с использованием тех же самых шагов. Я не понимаю, почему я вижу проблему только в cURL, а не Zlib, Bzip, iConv, PCRE, OpenSSL и т. Д. ... – jww

+0

@jww Скорее всего, скрипты сборки для рабочих зависимостей уже имеют более низкий 'MACOSX_DEPLOYMENT_TARGET 'set. –

0

Что может быть причиной изменения с -arch ppc на -arch ppc7400?

Райан был прав в отношении «... компилятор изменил свой запрос на -arch РРС в -arch ppc7400 для того, чтобы генерировать лучший код». Его документально подтверждено в руководстве GCC 3.17.10 Darwin Options.

Однако некоторые другие утверждения в ответе были не совсем целевыми, поэтому мне нужно предоставить ответ, чтобы прояснить их, если другие люди найдут вопрос и ответ полезным. Во-первых, аппаратное обеспечение - это Mac G5, а не G4.

Во-вторых, его непонятно, если поведение жестко закодировано в компиляторе или получено из файла specs.

В-третьих, я испытал проблему со стандартного ./configure && make; и не, вызывая универсальный или толстый двоичный код. Я был бы счастлив, если бы ./configure && make во всех библиотеках и программах последовательно создавал код для PPC, PPC970 или PPC7400. Я переключился на универсальные или жирные двоичные файлы, пытаясь полностью контролировать ситуацию.

В-четвертых, Mac G4 и OS X 10.4 не имеют ничего общего с проблемой.

Наконец, проблема может быть решена достаточно легко, без OS X SDK конкретных вариантов с помощью:

export CFLAGS="-force_cpusubtype_ALL" 

-force_cpusubtype_ALL может понадобиться в LDFLAGS, но это зависит от того, как библиотека использует Autotools. Для большинства библиотек было достаточно предоставить -force_cpusubtype_ALL в CFLAGS. PCRE был исключением из правила.