Difference between revisions of "Instalacja SDK (Software Development Kit) i podstawy jego używania"

From MorphOS Library

(Created, translation started, English text imported, crosslink to English version added.)
 
(Translation finished.)
 
(5 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
==Instalacja SDK==
 
==Instalacja SDK==
  
The official MorphOS SDK provides a complete environment for creating programs
+
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:
for MorphOS. It contains the following components:
 
  
* MorphOS includes (for the MorphOS native API).
+
* pliki nagłówkowe systemu  (dla natywnego API MorphOS-a).
* Standard C and C++ library includes.
+
* pliki nagłówkowe standardowej biblioteki C i C++.
* MorphOS API documentation and example code.
+
* Dokumentacja API MorphOS-a i przykładowe kody źródłowe.
* Two GCC compilers, 2.95.3 and 4.4.4.
+
* Dwie wersje kompilatora GCC: 2.95.3 i 4.4.4.
* GCC toolchains (one for each compiler), sets of developer utility programs.
+
* Zestawy programów towarzyszących GCC (tzw. ''toolchains''), jeden zestaw dla każdego kompilatora, inne narzędzia dla programistów.
* MorphED, a simple programmer's texteditor.
+
* MorphED, prosty edytor programisty.
* Perl scripting language (used by some SDK tools).
+
* Język skryptowy Perl, używany przez niektóre z narzędzi.
  
  
The first step of installation is to download the SDK archive from the [http://www.morphos.net morphos.net] site, or by clicking this [http://www.morphos-team.net/files/sdk-20100617.lha direct link]. The SDK is delivered as a LhA archive, which must be depacked before proceeding. The easiest way is to open a context menu for the archive (with the right mouse button in an Ambient window) and choose ''Extract''. After depacking a directory named ''morphossdk'' is created with an ''Installer'' application and a big file named ''sdk.pack'' inside. Installation is started by running ''Installer''. The only user choice that is needed here is to choose an installation directory. Then there is some time spent watching the progress bar...
+
Pierwszym krokiem instalacji jest pobranie archiwum SDK z portalu [http://www.morphos.net morphos.net], lub poprzez ten [http://www.morphos-team.net/files/sdk-20100617.lha 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...
  
  
After the installation a system reboot may be needed to update system assigns and paths.
+
Po instalacji może się okazać niezbędne zrestartowanie systemu w celu aktualizacji ścieżek i przypisań wolumenów.
  
  
==Choosing a Compiler==
+
==Wybór kompilatora==
  
As mentioned above, the SDK delivers two GCC compilers: an old but trusty 2.95.3 one, and the modern 4.4.4. There is a tool named ''GCCSelect'' in the SDK, which allows fast switching between compilers. Just type in a shell window
+
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:
  
<tt>GCCSelect 2.95.3</tt>
+
GCCSelect 2.95.3
  
or
+
lub
  
<tt>GCCSelect 4.4.4</tt>
+
GCCSelect 4.4.4
  
to change the current compiler. ''GCCSelect'' works by making symbolic links to the proper version of GCC and its tools, so the compiler is always called as ''gcc'' or ''g++'', regardless of the version chosen currently.
+
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.
  
  
Which one to choose? It depends on the code compiled and other constrains. Here is some guidance:
+
Którą wersję wybrać? To zależy od kompilowanego kodu i innych warunków. Oto kilka wskazówek:
  
* 2.95.3 compiles faster and consumes less memory.
+
* 2.95.3 kompiluje szybciej i wymaga przy tym mniej pamięci.
* For old code 2.95.3 would be better, as 4.4.4 will produce tons of warnings or even errors on code being flawlessly compiled by the old GCC.
+
* 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.
* For new projects, especially written in C++, GCC 4.4.4 is recommended, as the old one simply does not keep up with modern standards.
+
* 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 usually produces faster code (but sometimes also bigger, depending on optimizer options).
+
* 4.4.4 zazwyczaj generuje szybszy kod (czasem jednak kod jest również większy, zależnie od opcji optymalizatora).
* 4.4.4 is a relatively new and complex compiler, may contain more bugs than 2.95.3.
+
* 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.
  
My general advice is to use GCC 4 and only switch to GCC 2 if needed.
+
Generalnie zalecam używanie GCC 4 i przełączanie się na 2.95.3 tylko, gdy jest to niezbędne.
  
  
One can check which compiler is currently active using the '''&minus;v''' compiler option, which displays the compiler version and build options:
+
Aktualnie aktywną wersję kompilatora można sprawdzić opcją '''&minus;v''', która wyświetla wersję i opcje ustawione przy budowaniu kompilarora:
  
<tt>gcc -v</tt>
+
gcc -v
  
The last line of output shows the GCC version.
+
Ostatnia linia wyników tej komendy zawiera wersję GCC.
  
  
==Standard C and C++ Libraries==
+
==Standardowe biblioteki C i C++==
  
These standard libraries are parts of the C and C++ language specifications respectively. They mainly deliver file and console input/output functions, mathematic functions and string operations. The C++ library also provides a set of basic container classes.
 
  
* [http://en.wikipedia.org/wiki/C_standard_library C standard library on Wikipedia]
+
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 &ndash; kontenerów danych.
* [http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library C++ standard library on Wikipedia]
 
  
 +
* [http://pl.wikipedia.org/wiki/Biblioteka_standardowa_j%C4%99zyka_C Biblioteka standardowa C na Wikipedii]
 +
* [http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library Biblioteka standardowa C++ na Wikipedii (po angielsku)]
  
There are two ways to access these libraries on MorphOS. The first (and default) one is by using a MorphOS [[MorphOS_API_and_Its_Organization|shared library]]; ''ixemul.library''. As the name suggests, this library tries to provide some Unix environment emulation on MorphOS, which, other than the standard libraries, includes large part of [http://en.wikipedia.org/wiki/Posix POSIX] standard and some other commonly used functions. ''ixemul.library'' is usually used for porting big projects from the Unix/Linux world, for example it is used by GCC itself and many other tools in the SDK.
 
  
 +
Programy w systemie MorphOS mogą używać tych bibliotek na dwa sposoby. Pierwszym, domyślnym sposobem jest użycie [[Organizacja_API_MorphOS-a|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 [http://pl.wikipedia.org/wiki/POSIX 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''' '''n'''o '''ix'''emul''). 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 '''&minus;noixemul''' flag to the compiler and the linker. ''libnix'' delivers full C and C++ standard libraries, but its POSIX implementation is less complete.
 
  
 +
Drugim sposobem dostarczenia programowi bibliotek standardowych jest użycie ''libnixa'' (skrót od '''''lib''' '''n'''o '''ix'''emul''). 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ę '''&minus;noixemul'''. ''libnix'' zawiera w sobie kompletne biblioteki standardowe C i C++, ale jego implementacja POSIX-a jest mniej kompletna.
  
<small>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 '''&minus;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]].</small>
+
 
 +
<small>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 '''&minus;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]].</small>

Latest revision as of 12:47, 4 April 2011

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.