Создание Universal Драйверы Набора I/O
Описывает шаги для конфигурирования XCode проект драйвера ядра Набора I/O произвести универсальный драйвер. Также обсуждает типичные проблемы при загрузке универсальных драйверов.
Введение
Создание универсальных драйверов Набора I/O очень подобно создаванию повсеместных приложений, но существуют критические различия, которые могут влиять на водительскую совместимость на уровне двоичных кодов. Это техническое примечание описывает шаги для конфигурирования XCode проект драйвера ядра Набора I/O произвести универсальный драйвер и обсуждает общие проблемы совместимости на уровне двоичных кодов с универсальными драйверами.
Который XCode и Mac OS X версии SDK для Использования
XCode 2.2.1 является самой старой версией XCode, который может использоваться для создания универсальных драйверов Набора I/O.
Создание для основанных на Intel компьютеров Mac
Сторона Intel Вашего Набора I/O KEXT должна быть создана с помощью GCC 4.0 и Mac OS X 10.4u (Universal) SDK или позже. Используйте SDK, представляющий самую старую версию Mac OS X, который Вы хотите поддерживать, имея в виду, что первой версией Mac OS X, который будет поставлен в основанных на Intel системах, был Mac OS X 10.4.4.
Создание для основанных на PowerPC компьютеров Mac
Сторона PowerPC Вашего KEXT должна быть создана с помощью Mac OS X SDK, представляющий самую старую версию Mac OS X, который Вы хотите поддерживать.
Создание для основанных на PowerPC компьютеров Mac: Предназначение для Версий Mac OS X Ранее, чем 10,4
Создание для версий Mac OS X до 10,4 также требует, чтобы Вы создали GCC 3.3 использования.
Создание для основанных на PowerPC компьютеров Mac: Предназначение для Mac OS X 10.4.x Используя XCode 2.2.x или Xcode 2.3
При использовании XCode 2.2.x или 2.3, драйверы Набора I/O, предназначающиеся для Mac OS X 10.4.x в основанных на PowerPC системах, должны быть созданы с помощью Mac OS X 10.4.0 (не Universal) SDK. Это отличается от повсеместного применения, где 10.4u (Universal) SDK может использоваться на обеих архитектуре.
10.4.0 SDK доступен как автономный установщик от веб-сайта Соединения Разработчика Apple. Чтение меня файл доступно для установщика SDK.
10.4.0 SDK может также быть установлен от установщика Xcode 2.0, расположенного на Mac OS X 10,4 установок DVD. Это может быть найдено в заказных установках XCode при Кросс-разработке.
Создание для основанных на PowerPC компьютеров Mac: Предназначение для Mac OS X 10.4.x Используя Xcode 2.4 или Позже
Начало с Xcode 2.4 существует другая опция, которая должна определить символ препроцессора KPI_10_4_0_PPC_COMPAT при создании для архитектуры PowerPC. Когда этот символ препроцессора будет определен, 10.4u (Universal), SDK даст те же результаты как использование 10.4.0 SDK. Тот же SDK может тогда использоваться и для PowerPC и для архитектур Intel.
Если Ваш проект не будет сконфигурирован должным образом, то Вы будете видеть ошибку, описанную позже в Типичных проблемах с Universal Драйверы Набора I/O, когда Вы попытаетесь загрузить свой драйвер.
Подготовка проекта создать Универсальный драйвер
Для преобразования XCode только для PowerPC проект драйвера Набора I/O в универсальный проект сначала удостоверьтесь, что все цели в проекте являются собственными целями XCode. Можно проверить это путем открытия проекта в XCode, затем выбрать Project меню и видит если команда Upgrade All Targets in Project to Native включен. Если это, сделайте резервную копию своего проекта, то используйте ту команду для преобразования всех устаревших целей собственному компоненту.
Затем внесите следующие изменения в настройки Project или Target Build, в зависимости от которой версии XCode Вы используете. Измените настройки Project, если Вы хотите, чтобы настройки применились ко всем целям в проекте. Измените настройки Target, если Вы хотите просто, чтобы определенная цель произвела универсальный KEXT.
XCode 2.x настройки сборки
Используя надлежащий SDK и компилятор версии легко выполняется с помощью настроек сборки XCode на архитектуру.
Набор
Architecturesкppc i386. Это может быть сделано путем двойного щелчка по словуArchitecturesи затем выбор обоихPowerPCиIntelфлажки.Удалите любую установку для
SDK PathиVALID_ARCHSпутем выбора опции и затем щелчка-кнопка у основания окна.Добавьте пользовательские настройки
SDKROOT_i386иSDKROOT_ppc. Установите значение каждого к пути SDK для использования для построения на каждой архитектуре.SDKROOT_i386должен быть установлен в/Developer/SDKs/MacOSX10.4u.sdkиSDKROOT_ppcдолжен указать на SDK, соответствующий самый старый главный Mac OS X, выпускают Вас, хотят поддерживать, такой как/Developer/SDKs/MacOSX10.2.8.sdk.Добавьте настройки
GCC_VERSION_i386иGCC_VERSION_ppcэто указывает версию компилятора для использования при создании для каждой архитектуры.GCC_VERSION_i386должен быть установлен в4.0или больше. Если Вы хотите поддерживать версии Mac OS X до 10,4,GCC_VERSION_ppcдолжен быть установлен в3.3.Если Вы используете Xcode 2.4, 2.4.1, или 2.5, и сторона PowerPC Вашего KEXT предназначается для Mac OS X 10.4.x, добавьте установку
PER_ARCH_CFLAGS_ppcэто указывает флаги компилятора для передачи GCC только при создании для архитектуры PowerPC. Установите значениеPER_ARCH_CFLAGS_ppcк-DKPI_10_4_0_PPC_COMPAT.Набор
Mac OS X Deployment TargetкCompiler Default.Добавьте настройки
MACOSX_DEPLOYMENT_TARGET_i386иMACOSX_DEPLOYMENT_TARGET_ppc. Эти настройки должны иметь значение главного номера релизной версии Mac OS X такой как10.2или10.4. Не указывайте версии обновления программного обеспечения такой как 10.3.9.MACOSX_DEPLOYMENT_TARGET_i386должен быть установлен в10.4или позже, иMACOSX_DEPLOYMENT_TARGET_ppcдолжен быть установлен в самый старый главный Mac OS X, выпускают Вас, хотят поддерживать.
Настройки сборки Xcode 3.0
Xcode 3.0 обеспечивает улучшенный пользовательский интерфейс для настроек сборки на архитектуру по XCode 2.x.
Установите
Configurationменю наверху окна кAll Configurations.Единственный щелчок значение установки сборки
Architecturesи измените его наi386 ppc.Набор
Base SDKк/Developer/SDKs/MacOSX10.4u.sdkесли сторона Intel Вашего KEXT предназначается для Mac OS X 10.4 или/Developer/SDKs/MacOSX10.5.sdkпри предназначении для Mac OS X 10.5.Если Вы хотите использовать различный SDK при создании для архитектуры PowerPC выберите
Base SDKустановка сборки, затем выберитеAdd Per-Architecture Setting Forиз меню действий в левом нижнем углу окна и выбораPowerPCиз подменю. Измените значениеPowerPCустанавливая просто добавленный к пути желаемого SDK для архитектуры PowerPC, такой как/Developer/SDKs/MacOSX10.3.9.sdk.Набор
Debug Information FormatкDWARF with dSYM File.Если необходимо использовать GCC 3.3 при создании для архитектуры PowerPC выберите
Debug Information Formatустановка сборки, затем выберитеAdd Per-Architecture Setting Forиз меню действий в левом нижнем углу окна и выбораPowerPCиз подменю. ИзменитесьPowerPCустановка просто добавленного кStabsиспользование всплывающего меню вправо.Добавьте определяемую пользователем установку
GCC_VERSIONи набор его значение к4.0.Если Вы хотите поддерживать версии Mac OS X до 10,4 при создании для архитектуры PowerPC выберите
GCC_VERSIONустановка сборки, затем выберитеAdd Per-Architecture Setting Forиз меню действий в левом нижнем углу окна и выбораPowerPCиз подменю. Измените значениеPowerPCустановка просто добавленного к3.3.Набор
Mac OS X Deployment TargetкMac OS X 10.4или позже.Если Вы хотите поддерживать версии Mac OS X до 10,4 при создании для архитектуры PowerPC выберите
Mac OS X Deployment Targetустановка сборки, затем выберитеAdd Per-Architecture Setting Forиз меню действий в левом нижнем углу окна и выбораPowerPCиз подменю. Измените значениеPowerPCустановка просто добавленного к самому старому главному Mac OS X выпускает Вас, хотят поддерживать использование всплывающего меню вправо.Если сторона PowerPC Вашего KEXT предназначается для Mac OS X 10.4.x, выберите
Other C Flagsустановка сборки, затем выберитеAdd Per-Architecture Setting Forиз меню действий в левом нижнем углу окна и выбораPowerPCиз подменю. Измените значениеPowerPCустановка просто добавленного к-DKPI_10_4_0_PPC_COMPAT.
Настройки сборки Xcode 3.1
Xcode 3.1 использует условные настройки сборки вместо настроек сборки на архитектуру, используемых XCode 2.x и 3.0.
Для преобразования XCode только для PowerPC проект драйвера Набора I/O в универсальный проект сначала удостоверьтесь, что все цели в проекте являются собственными целями XCode. Можно проверить это путем открытия проекта в XCode, затем выбрать Project меню и видит если команда Upgrade All Targets in Project to Native включен. Если это, сделайте резервную копию своего проекта, то используйте ту команду для преобразования всех устаревших целей собственному компоненту.
Затем внесите следующие изменения в настройки Project или Target Build. Измените настройки Project, если Вы хотите, чтобы настройки применились ко всем целям в проекте. Измените настройки Target, если Вы хотите просто, чтобы определенная цель произвела универсальный KEXT.
Установите
Configurationменю наверху окна кAll Configurations.Набор
ArchitecturesкStandard (32-bit Universal).Набор
Base SDKк10.4или позже.Если Вы хотите использовать различный SDK при создании для архитектуры PowerPC выберите
Base SDKустановка сборки, затем выберитеAdd Build Setting Conditionиз меню действий в левом нижнем углу окна. ИзменитесьAny Architectureустановка вPowerPCи выберите желаемый SDK для архитектуры PowerPC из всплывающего меню вправо.Снимите флажок
Build Active Architecture Onlyфлажок.Набор
Debug Information FormatкDWARF with dSYM File.Если необходимо использовать GCC 3.3 при создании для архитектуры PowerPC выберите
Debug Information Formatустановка сборки, затем выберитеAdd Build Setting Conditionиз меню действий в левом нижнем углу окна. ИзменитесьAny Architectureустановка вPowerPCи выберитеStabsиз всплывающего меню вправо.Набор
C/C++ Compiler VersionкGCC System Version (4.0).Если Вы хотите поддерживать версии Mac OS X до 10,4 при создании для архитектуры PowerPC выберите
C/C++ Compiler Versionустановка сборки, затем выберитеAdd Build Setting Conditionиз меню действий в левом нижнем углу окна. ИзменитесьAny Architectureустановка вPowerPCи выберитеGCC 3.3из всплывающего меню вправо.Набор
Deployment TargetкMac OS X 10.4или позже.Если Вы хотите поддерживать версии Mac OS X до 10,4 при создании для архитектуры PowerPC выберите
Deployment Targetустановка сборки, затем выберитеAdd Build Setting Conditionиз меню действий в левом нижнем углу окна. ИзменитесьAny Architectureустановка вPowerPCи выберите самый старый главный Mac OS X, выпускают Вас, хотят поддерживать из всплывающего меню вправо.Проверьте
Kernel Development Modeфлажок.Если сторона PowerPC Вашего KEXT предназначается для Mac OS X 10.4.x, выберите
Other C Flagsустановка сборки, затем выберитеAdd Build Setting Conditionиз меню действий в левом нижнем углу окна. ИзменитесьAny Architectureустановка вPowerPCи набор значение вправо к-DKPI_10_4_0_PPC_COMPAT.
Типичные проблемы с Universal Драйверы Набора I/O
Большинство проблем, с которыми Вы встретитесь после создания универсального драйвера, появится при загрузке его. Например, kextload могла бы сообщить ошибка
com.mycompany.driver.MyDriverClass is not compatible with its superclass, <superclass name> superclass changed? |
Причина большинства ошибок времени загрузки состоит в том, что неправильный SDK использовался при создании драйвера. Например, сторона PowerPC драйвера предназначается для Mac OS X 10.3.x, но была создана с помощью 10.4u SDK. Пошлите к информации о версии SDK, показанной ранее в Который XCode и Mac OS X Версии SDK Использовать. Тогда проверьте, что Ваш проект XCode устанавливается, как описано ранее в XCode 2.x Настройки Сборки, Настройки Сборки Xcode 3.0 или Настройки Сборки Xcode 3.1.
История версии документа
| Дата | Примечания |
|---|---|
| 18.08.2008 | Обновленный для XCode 3.x. |
| 10.11.2006 | Добавленное примечание о совместимости на уровне двоичных кодов IOSCSIParallelInterfaceController. |
| 25.08.2006 | Обновленный для Xcode 2.4. |
| 02.02.2006 | Новый документ это, как создать универсальный драйвер ядра Набора I/O при предотвращении распространенных ошибок. |