Instalacja SDK (Software Development Kit) i podstawy jego używania

From MorphOS Library

Grzegorz Kraszewski


Ta strona w innych językach: angielski


Instalacja SDK

Oficjalny pakiet SDK (Software Developer Kit) MorphOS-a zawiera komplet narzędzi niezbędnych do tworzenia programów dla tego systemu. Znajdują się w nim następujące elementy:

  • pliki nagłówkowe systemu (dla natywnego API MorphOS-a).
  • pliki nagłówkowe standardowej biblioteki C i C++.
  • Dokumentacja API MorphOS-a i przykładowe kody źródłowe.
  • Dwie wersje kompilatora GCC: 2.95.3 i 4.4.4.
  • Zestawy programów towarzyszących GCC (tzw. toolchains), jeden zestaw dla każdego kompilatora, inne narzędzia dla programistów.
  • MorphED, prosty edytor programisty.
  • Język skryptowy Perl, używany przez niektóre z narzędzi.


Pierwszym krokiem instalacji jest pobranie archiwum SDK z portalu morphos.net, lub poprzez ten bezpośredni odnośnik. SDK jest udostępnione jako archiwum LhA, które należy samodzielnie rozpakować przed instalacją. Najłatwiej można to zrobić, otwierając menu kontekstowe dla pliku archiwum w oknie Ambienta i wybierając Rozpakuj. Przy rozpakowywaniu archiwum jest tworzony katalog morphossdk zawierający program instalacyjny i duży plik o nzawie sdk.pack Rozpoczynamy instalację uruchamiając Installera. Jedyna decyzja, jaką trzeba podjąć w czasie instalacji, to wybór katalogu docelowego. Potem podziwiamy już tylko pasek postępu...


Po instalacji może się okazać niezbędne zrestartowanie systemu w celu aktualizacji ścieżek i przypisań wolumenów.


Wybór kompilatora

Jak wspomniano wyżej, w SDK znajdują się dwa kompilatory GCC: stary, ale sprawdzony 2.95.3 oraz w miarę nowy 4.4.4. Do szybkiego przełączania się między nimi służy program GCCSelect, znajdujący się po instalacji w głównym katalogu SDK. Używa się go w następujący sposób:

GCCSelect 2.95.3

lub

GCCSelect 4.4.4

Program zmienia dowiązania symboliczne do kompilatora i programów narzędziowych tak, aby wskazywały na wybraną wersję. Dzięki temu kompilator zawsze wywołuje się poleceniem gcc albo g++, niezależnie od aktualnie wybranej wersji.


Którą wersję wybrać? To zależy od kompilowanego kodu i innych warunków. Oto kilka wskazówek:

  • 2.95.3 kompiluje szybciej i wymaga przy tym mniej pamięci.
  • 2.95.3 jest lepszy do starego kodu, 4.4.4 może zgłosić mnóstwo ostrzeżeń, a nawet błędów w kodzie, który starsze GCC skompiluje bez problemu.
  • Do nowych projektów, szczególnie pisanych w C++, lepiej użyć GCC 4.4.4. Stary kompilator w wielu miejscach nie jest zgodny z aktualnym standardem C++.
  • 4.4.4 zazwyczaj generuje szybszy kod (czasem jednak kod jest również większy, zależnie od opcji optymalizatora).
  • 4.4.4 jest stosunkowo świeżym i bardziej złożonym kompilatorem. Może zawierać więcej błędów niż sprawdzony przez lata 2.95.3.

Generalnie zalecam używanie GCC 4 i przełączanie się na 2.95.3 tylko, gdy jest to niezbędne.


Aktualnie aktywną wersję kompilatora można sprawdzić opcją −v, która wyświetla wersję i opcje ustawione przy budowaniu kompilarora:

gcc -v

Ostatnia linia wyników tej komendy zawiera wersję GCC.


Standardowe biblioteki C i C++

Biblioteki standardowe są częścią specyfikacji języka C i C++. Zawierają przede wszystkim funkcje wejścia/wyjścia dla plików i konsoli tekstowej, funkcje matematyczne i operacje na łańcuchach tekstowych. Biblioteka C++ zawiera również zestaw podstawowych klas – kontenerów danych.


Programy w systemie MorphOS mogą używać tych bibliotek na dwa sposoby. Pierwszym, domyślnym sposobem jest użycie biblioteki współdzielonej ixemul.library. Jak sugeruje nazwa, biblioteka ta próbuje zasymulować programowi środowisko systemu uniksowego. Oprócz biblioteki standardowej oznacza to implementację znacznej części standardu POSIX i wiele innych powszechnie używanych funkcji. Biblioteka ixemul.library jest zwykle używana do portowania większych projektów z Unixa/Linuxa, jest na przykład używana przez sam port GCC i jego programy narzędziowe.


Drugim sposobem dostarczenia programowi bibliotek standardowych jest użycie libnixa (skrót od lib no ixemul). W przeciwieństwie do ixemul.library, libnix jest biblioteką linkowaną statycznie z aplikacją. To zalecany sposób dołączenia biblioteki standardowej do programów pisanych od podstaw dla MorphOS-a (a także portów, o ile to możliwe). Linkowanie z libnixem uaktywnia się podając kompilatorowi i linkerowi opcję −noixemul. libnix zawiera w sobie kompletne biblioteki standardowe C i C++, ale jego implementacja POSIX-a jest mniej kompletna.


Jeszcze jedną możliwością jest całkowita rezygnacja z użycia bibliotek standardowych. Na pierwszy rzut oka to szalony pomysł, ale natywne API systemu posiada kompletną obsługę wejścia/wyjścia do plików, konsoli i innych obiektów DOS-a, jak również wiele funkcji do obróbki łańcuchów tekstowych, funkcji matematycznych itp. Bezpośrednie użycie natywnego API systemu czyni program mniejszym i szybszym. Z drugiej strony kod używający natywnego API nie jest bezpośrednio przenośny na systemy operacyjne inne niż amigowe/amigopodobne. Opcja kompilatora −nostdlib powoduje pominięcie bibliotek standardowych przy kompilacji i linkowaniu programu. Trzeba również zauważyć, że w tym przypadku wymagane jest napisanie własnego kodu startowego.