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.
The second way is to use libnix (as in; lib no ixemul). In contrast to ixemul.library, libnix is statically linked with the application. This is the preferred way for providing standard libraries for MorphOS native applications. It is achieved by passing the −noixemul flag to the compiler and the linker. libnix delivers full C and C++ standard libraries, but its POSIX implementation is less complete.
Another alternative is to not use standard libraries at all. It may sound crazy at first, but the MorphOS native API provides complete file and console I/O as well as some string manipulation functions and many mathematic functions. Using the native API makes applications faster and smaller in size. On the other hand code using the MorphOS API directly is not portable to non-Amiga(like) systems. A −nostdlib compiler option instructs the compiler to not link the code with the standard library. Note that this requires also writing your own custom startup code.