8.3. Коммерческие Unix
Пред. | Глава 8. Портинг | След.

## 8.3. Коммерческие Unix

MPlayer был портирован на некоторые коммерческие варианты Unix. Поскольку окружения разработки этих систем отличаются от свободных Unix'ов, вам придется самостоятельно произвести некоторые действия, чтобы сборка заработала.

### 8.3.1. Solaris

MPlayer должен работать под Solaris 2.6 и более новыми версиями. Для звука используйте звуковой драйвер SUN с опцией `-ao sun`.

На UltraSPARC'ах, MPlayer использует преимущество их расширения VIS (эквивалент MMX), но (в настоящий момент) только в `libmpeg2`, `libvo` and `libavcodec`, но не в `mp3lib`. Вы сможете просматривать VOB'ы на 400MHz CPU. Вам потребуется установленная `mLib`.

Предостережение:

- mediaLib в данный момент отключена по умолчанию в MPlayer из-за поломанности. Пользователи SPARC, компилировавшие MPlayer с mediaLib сообщали об изобилии зелёного оттенка в видео, кодируемом и декодируемом libavcodec. Если хотите, можете включить ее:

      $ ./configure --enable-mlib

  Вы делаете это на свой страх и риск, пользователи x86 не жолжны никогда использовать mediaLib, поскольку это очень сильно скажется на производительности MPlayer.

Чтобы собрать программу, Вам потребуется GNU make (`gmake`, `/opt/sfw/gmake`), родной Solaris make не будет работать. Типичная ошибка которую Вы будете получать при использовании Solaris make, вместо GNU make:

    % /usr/ccs/bin/make
    make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

На Solaris SPARC, Вам потребуется GNU C/C++ Compiler; при этом не имеет значения, был ли GNU C/C++ компилятор сконфигурирован с или без GNU ассемблера.

На Solaris x86, Вам потребуются GNU ассемблер и GNU C/C++ компилятор, сконфигурированный, чтобы использовать GNU ассемблер! На x86 платформах код MPlayer'а использует много MMX, SSE и 3DNOW! инструкций, которые Sun'овский ассемблер `/usr/ccs/bin/as` не может скомпилировать.

Скрипт `configure` пытается обнаружить, какой ассемблер используется Вашей командой "gcc" (в том случае, если автоопределение не сработает, используйте опцию `--as=`/там/где/у/Вас/установлен/gnu-as``, чтобы сообщить скрипту `configure`, где можно обнаружить GNU "as" на Вашей системе).

Решение общих проблем:

- Сообщения об ошибках `configure` на Solaris x86 системах при использовании GCC без GNU ассемблера:

      % configure
      ...
      Checking assembler (/usr/ccs/bin/as) ... , failed
      Please upgrade(downgrade) binutils to 2.10.1...

  (Решение: Установите и используйте gcc, сконфигурированный с `--with-as=gas`)

  Типичная ошибка при сборке GNU C компилятором, который не использует GNU as:

      % gmake
      ...
      gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
          -fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
      Assembler: mplayer.c
      "(stdin)", line 3567 : Illegal mnemonic
      "(stdin)", line 3567 : Syntax error
      ... more "Illegal mnemonic" and "Syntax error" errors ...

- MPlayer может сообщить о нарушении сегментации при кодировании и декодировании видео, использующего win32codecs:

      ...
      Trying to force audio codec driver family acm...
      Opening audio decoder: [acm] Win32/ACM decoders
      sysi86(SI86DSCR): Invalid argument
      Couldn't install fs segment, expect segfault

      MPlayer interrupted by signal 11 in module: init_audio_codec
      ...

  Это из-за изменений в sysi86() в Solaris 10 и пре-Solaris Nevada b31 релизах. Исправлено в Solaris Nevada b32; тем не менее Sun еще следует портировать исправление обратно на Solaris 10. Проект MPlayer осведомил Sun об этой проблеме и патч в данный момент готовится для Solaris 10. Больше информации об этой ошибке ищите на: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

- В связи с ошибками в Solaris 8, Вы не сможете проигрывать DVD диски, размером больше 4 Гб:

  - Под Solaris 8 x86 драйвер sd(7D) содержит ошибку, проявляющуюся при доступе к дискам, размером > 4 Гб на устройствах с логическим размером блока != DEV_BSIZE (например CD-ROM и DVD диски). Из-за целочисленного 32-х битного переполнения, происходит доступ к дисковому адресу по модулю 4 Гб (http://groups.yahoo.com/group/solarisonintel/message/22516). Проблема отсутствует в SPARC версиях Solaris 8.

  - Похожая ошибка существует в коде файловой системы hsfs(7FS) (ISO9660), hsfs может не поддерживать разделы/диски больше 4 Гб, доступ к данным происходит по модулю 4 Гб (http://groups.yahoo.com/group/solarisonintel/message/22592). Проблемы с hsfs могут быть исправлены установкой патча 109764-04 (sparc) / 109765-04 (x86).

### 8.3.2. HP-UX

Joe Page на своей домашней странице держит подробное HOWTO по MPlayer на HP-UX, написанное Martin Gansser. С этими инструкциями сборка должна работать "прямо из коробки". Следующая информация взята оттуда.

Вам потребуется GCC 3.4.0 или полее поздней версии, GNU make версии 3.80 или новее и SDL 1.2.7 или более новый. HP cc не может создать работоспособную программу, предыдущие версии GCC глючат. Для функционирования OpenGL необходимо установить Mesa, после чего должны заработать драйвера вывода видео gl и gl2, хотя, в зависимости от быстродействия CPU, скорость может быть ужасной. GNU esound является хорошей заменой довольно бедной звуковой системе HP-UX.

Произведите сканирование шины SCSI на предмет наличия DVD устройства:

    # ioscan -fn

    Class          I            H/W   Path          Driver    S/W State    H/W Type        Description
    ...
    ext_bus 1    8/16/5      c720  CLAIMED INTERFACE  Built-in SCSI
    target  3    8/16/5.2    tgt   CLAIMED DEVICE
    disk    4    8/16/5.2.0  sdisk CLAIMED DEVICE     PIONEER DVD-ROM DVD-305
                             /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
    target  4    8/16/5.7    tgt   CLAIMED DEVICE
    ctl     1    8/16/5.7.0  sctl  CLAIMED DEVICE     Initiator
                             /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0
    ...

Вывод показывает, что по адресу 2 шины SCSI находится Pioneer DVD-ROM. Экземпляр карты для аппаратного пути 8/16 равен 1.

Создайте ссылку от сырого устройства к DVD устройству.

    ln -s /dev/rdsk/c<SCSI bus instance>t<SCSI target ID>d<LUN> /dev/<device>

Пример:

    ln -s /dev/rdsk/c1t2d0 /dev/dvd

Далее следуют решения некоторых общих проблем:

- Крах при запуске с таким сообщением об ошибке:

      /usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl

  Это значит, что функция `.finite().` недоступна в стандартной математической библиотеке HP-UX. Вместо этого используйте `.isfinite().`. Решение: Используйте последнюю версию Mesa из репозитория.

- Крах при воспроизведении со следующей ошибкой:

      /usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0

  Решение: Используйте опцию extralibdir программы configure `--with-extralibdir="/usr/lib -lrt"`

- MPlayer вылетает с нарушением сегментации и сообщением вроде этого:

      Pid 10166 received a SIGSEGV for stack growth failure.
      Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz.
      Segmentation fault

  Решение: Ядро HP-UX по-умолчанию для каждого процесса имеет размер стека равный 8MB(?). (11.0 и новые патчи для 10.20 позволяют вам увеличить `maxssiz` вплоть до 350MB для 32-х битных программ). Вы должны расширить `maxssiz` и перекомпилировать ядро (и перезагрузиться). Чтобы сделать это, можно использовать SAM. (Находясь в нем, проверьте параметр `maxdsiz` на предмет максимального количества данных, которые могут использоваться программами. 64 Мб по умолчанию может хватить или не хватить в зависимости от Ваших приложений.)

### 8.3.3. AIX

MPlayer успешно собирается на AIX 5.1, 5.2, и 5.3, используя GCC 3.3 или новее. Сборка MPlayer не проверена на AIX 4.3.3 и более ранних. Крайне рекомендуется собирать MPlayer используя GCC 3.4 или старше, и, как минимум, GCC 4.0, если собираете на POWER5.

Убедитесь, что используете GNU make (`/opt/freeware/bin/gmake`) для сборки MPlayer, поскольку столкнетесь с проблемами при использовании `/usr/ccs/bin/make`.

По-прежнему ведется работа над кодом определения CPU. Проверены следующие архитектуры:

- 604e

- POWER3

- POWER4

На следующих архитектурах не проверялось, но должно работать:

- POWER

- POWER2

- POWER5

Вывод звука через Ultimedia Services не поддерживается, т.к. Ultimedia была убрана из AIX 5.1; таким образом, остается единственный вариант: использовать драйвер AIX Open Sound system (OSS) от 4Front Technologies с http://www.opensound.com/aix.html. Для некоммерческого использования 4Front Technologies распространяет драйвер OSS под AIX 5.1 бесплатно; несмотря на это, на текущий день нет драйверов вывода звука для AIX 5.2 или 5.3. drivers for AIX 5.2 or 5.3. Это означает, что сейчас AIX 5.2 и 5.3 несовместимы с выводом звука MPlayer.

Решения для общих проблем:

- Если вы столкнулись с такой ошибкой `configure`:

      $ ./configure
      ...
      Checking for iconv program ... no
      No working iconv program found, use
      --charset=US-ASCII to continue anyway.
      Messages in the GTK-2 interface will be broken then.

  Это из-за того, что AIX использует нестандартные имена кодировок; поэтому перекодировка сообщений в данный момент не работает. Решение - использовать:

      $ ./configure --charset=noconv

### 8.3.4. QNX

Вам нужно скачать и установить SDL для QNX. Затем запустите MPlayer с опциями `-vo sdl:photon` и `-ao sdl:nto`, и все будет работать быстро.

Вывод `-vo x11` будет ещё медленнее, чем под Linux, поскольку под QNX X'ы эмулируются, что ОЧЕНЬ медленно.

Пред. | Уровень выше | След.
8.2. *BSD | Начало | 8.4. Windows