5.3. Komercyjny Unix
Poprzedni | Rozdział 5. Porty | Następny

## 5.3. Komercyjny Unix

MPlayer został przeportowany na wiele komercyjnych wariantów Uniksa. Jako, że środowiska programistyczne przeważnie różnią się od tych znajdowanych w wolnych Uniksach, być może będziesz musiał wprowadzić ręczne poprawki, aby program skompilował się poprawnie.

### 5.3.1. Solaris

MPlayer powinien działać na Solarisie 2.6 lub nowszym. Możesz skorzystać ze sterownika dźwięku SUN'a podająć opcję `-ao sun`.

Na UltraSPARCach, MPlayer korzysta z rozszerzenia VIS (odpowiednik MMX), obecnie tylko w `libmpeg2`, `libavo` i `libavcodec`, ale nie w `mp3lib`. Możesz oglądać plik VOB na procesorze z taktowaniem 400MHz. Będziesz potrzebował do tego biblioteki `mLib`.

Caveat:

- mediaLib jest aktualnie wyłączone w domyślnej konfiguracji MPlayera, z powodu błędów. Użytkownicy SPARC-ów, którzy budują MPlayera z obsługą mediaLib informowali o delikatnym, zielonymi miganiu wideo kodowane i dekodowanego przez libavcodec. Możesz włączyć mediaLib, jeżeli chcesz używając:

      $ ./configure --enable-mlib

  Robisz to na własne ryzyko. Użytkownicy x86 powinni nigdy nie używać mediaLib, ponieważ w efekcie otrzymają kiepską wydajność MPlayera.

Aby zbudować pakiet, będziesz potrzebował GNU make (`gmake`, `/opt/sfw/gmake`), rdzenne make Solarisa nie zadziała. Typowy błąd jaki otrzymujesz, budując tym drugim zamiast GNU make, to:

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

W Solarisie przeznaczonym dla SPARC, potrzebujesz kompilatora GNU C/C++; nie ma znaczenia, czy jest on skonfigurowany z, czy bez GNU assemblera.

Na Solarisie x86, potrzebujesz GNU assemblera i kompilatora GNU C/C++, skonfigurowanego do używania GNU assemblera! Kod MPlayera, na platformie x86, w znaczący sposób korzysta z instrukcji MMX, SSE i 3DNOW!, które nie mogą być skompilowane przy pomocy assemblera Sun `/usr/ccs/bin/as`.

Skrypt `configure` stara się określić, jaki assembler wywoływany jest przez komendę "gcc" (jeżeli próba zakończy się fiaskiem, użyj opcji `--as=`/gdziekolwiek/zainstalowałeś/gnu-as``, żeby określić gdzie skrypt `configure` może znaleźć GNU "as" w Twoim systemie).

Rozwiązania najczęstszych problemów:

- Błąd jaki wyświetli `configure` na Solarisie x86, używającym GCC bez GNU assemblera:

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

  (Rozwiązanie: Zainstaluj i używaj gcc skonfigurowanego z opcją `--with-as=gas`)

  Typowy błąd, jaki otrzymasz przy próbie budowy kompilatorem GNU C, który nie używa 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 może się wysypać podczas dekodowania i kodowania wideo używających 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
      ...

  Dzieje się tak z powodu zmian w sysi86() w Solaris 10 i wydaniach pre-Solaris Nevada b31. Zostało to naprawione w Solaris Nevada b32; jednak Sun nie przeniósł jeszcze poprawki do Solarisa 10. Projekt MPlayer poinformował o tym problemie Sun i łatka jest aktualnie wprowadzana do Solarisa 10. Więcej informacji o tym błędzie może zostać znaleziona na stronie: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

- Ze względu na błędy występujące w Solarisie 8, możesz nie być w stanie odtwarzać płyt DVD o pojemności większej niż 4 GB:

  - Sterownik sd(7D) dla Solarisa 8 x86 ma błąd ujawniający się przy próbie dostępu do bloku dyskowego >4GB urządzenia korzystającego z logicznego rozmiaru bloku !=DEV_BSIZE (np. nośnik CD-ROM i DVD). Ze względu na przepełnienie 32bitowych liczb całkowitych, odczytywany jest adres dysku modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22516). Ten problem nie występuje na Solarisie 8 przeznaczonym dla procesorów SPARC.

  - Podobny błąd występuje w kodzie systemu plików hsfs(7FS) (znanym jako ISO9660), hsfs może nie obsługiwać partycji/dysków większych niż 4GB, wszystkie dane są odczytywane z bloku modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22592). Problem może być rozwiązany przy pomocy łatki 109764-04 (sparc) / 109765-04 (x86).

### 5.3.2. HP-UX

Joe Page umieścił na swojej stronie domowej dokument HOWTO stworzony przez Martina Gansser'a dotyczący MPlayera na HP-UX. Korzystając z zawartych tam intrukcji program powinien się skompilować bez najmniejszych problemów. Poniższe informacje są zaczerpnięte z tego opracowania.

Do budowy będziesz potrzebował GCC 3.4.0, GNU make 3.80, i SDL 1.2.7 lub ich nowszych wersji. Kompilator HP cc nie wyprodukuje działającego programu, a wcześniejsze wersje GCC są pełne błędów. Aby moć skorzystać z OpenGL, musisz zainstalować biblioteki Mesa, wtedy sterowniki wyjścia video gl i gl2 powinny działać. Ich wydajność może być tragiczna, jednak zależne jest to od mocy obliczeniowej procesora. Dobrym zamiennikiem, raczej kiepskiego, systemu dźwiękowego HP-UX jest GNU esound.

Stwórz urządzenie DVD, przeskanuj magistralę SCSI komendą:

    # 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
    ...

Z rezultatów działania komendy możemy odczytać, że na adresie 2 SCSI znajduje się Pioneer DVD-ROM. Instancja karty dla ścieżki sprzętowej 8/16 to 1.

Stwórz dowiązanie surowego urządzenia do urządzenia DVD.

    # ln -s /dev/rdsk/c<instancja magistrali SCSI>t<ID docelowego SCSI>d<LUN> /dev/<urządzenie>

Przykład:

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

Poniżej znajdują się rozwiązania kilku najczęstszych problemów:

- Wysypanie się programu przy uruchamianiu z komunikatem błędu:

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

  Oznacza to, że funkcja `.finite().` jest niedostępna w standardowej bibliotece math HP-UX. Zamiast niej dostępna jest `.isfinite().`. Rozwiązanie: Skorzystaj z najnowszego pliku składowego Mesa.

- Wysypanie się programu przy odtwarzaniu z komunikatem:

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

  Rozwiązanie: Skorzystaj z opcji extralibdir skryptu configure `--extra-ldflags="/usr/lib -lrt"`

- MPlayer powoduje błąd naruszenia ochrony pamięci (segfault) z komunikatem:

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

  Rozwiazanie: Jądro HP-UX ma domyślnie zdefiniowany rozmiar stosu przeznaczonego na każdy proces i jest to 8MB(?).(11.0 i nowsze łatki 10.20 pozwalają Ci zwiększyć parametr `maxssiz` do 350MB dla 32-bitowych programów). Musisz rozszerzyć `maxssiz` i przekompilować jądro (i uruchomić ponownie komputer). Możesz wykorzystać do tego celu SAM. (Kiedy w nim będziesz, sprawdź wartość `maxdsiz`. Określa ona maksymalny rozmiar danych, jaką program może użyć. To czy domyślne 64MB wystarczy czy nie, zależy wyłącznie od wymagań Twoich aplikacji.)

### 5.3.3. AIX

MPlayer kompiluje się z powodzenie na AIX 5.1, 5.2 i 5.3, korzystając z GCC 3.3 lub wyższego. Budowanie MPlayer na AIX 4.3.3 i niższych nie było sprawdzane. Zaleca się, abyś budowal MPlayera używając GCC 3.4 lub wyższego lub jeżeli kompilujesz na POWER5 - GCC 4.0.

Upenij się, że używasz GNU make (`/opt/freeware/bin/gmake`), aby kompilować MPlayera, jako że możesz napotkać na problemy przy korzystaniu z `/usr/ccs/bin/make`.

Wykrywanie CPU jest ciągle dopracowywane. Poniższe architektury zostały przetestowane:

- 604e

- POWER3

- POWER4

Poniższe architektury nie były testowane, ale i tak powinny działać:

- POWER

- POWER2

- POWER5

Dźwięk przez Ultimedia Services nie jest obsługiwany, jako że ta technologia została porzucona w AIX 5.1; dlatego też, jedynym wyjściem jest korzystanie ze sterowników AIX Open Sound System (OSS) tworzonych przez 4Front Technologies, znajdziesz je na http://www.opensound.com/aix.html . 4Front Technologies udostępnia swoje sterowniki OSS za darmo do niekomercyjnego zastosowania; jednakże, nie ma aktualnie sterowników wyjścia audio dla AIX 5.2 lub 5.3. Oznacza to, że AIX 5.2 i 5.3 nie potrafią aktualnie używać wyjścia audio MPlayera.

Rozwiązania częstych problemów:

- Jeżeli otrzymujesz od `configure` taki komunikat błędu:

      $ ./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.

  To dzieje się tak dlatego, że AIX używa nie standardowych zestawów nazw znaków; dlatego też, konwersja wyjścia MPlayera do innego zestawu znaków (kodowania) nie jest aktualnie obsługiwana. Rozwiązaniem jest użycie:

      $ ./configure --charset=noconv

### 5.3.4. QNX

Będziesz musiał ściągnąć bibliotekę SDL dla QNX i zainstalować ją. Wtedy uruchom MPlayera z opcją `-vo sdl:driver=photon` i `-ao sdl:nto`, powinno działać szybko.

Wyjście `-vo x11` będzie nawet wolniejsze niż na Linuksie, ponieważ QNX ma tylko emulację X'ów, która jest bardzo wolna.

Poprzedni | Początek rozdziału | Następny
5.2. *BSD | Spis treści | 5.4. Windows