Tab. 18. Parametry wywołania
Parametr IAR | Parametr GNU | Rozdział dokumentacji GCC | Komentarz |
–only_stdout | brak | Włącza wykorzystywanie tylko standardowego wyjścia – możliwe jest to przy wywoływaniu kompilatora z wiersza poleceń. | |
–output | -o | 3.2 | Ustawia nazwę pliku obiektowego. |
–predef_macros | -E –dM | 3.11 | Wypisuje symbole predefiniowane. |
–preinclude | -include | 3.11 | Wymusza włączenie do kodu pliku, którego nazwa występuje po tym parametrze przed wczytywaniem pliku z kodem źródłowym. |
–preprocess | -E | 3.11 | Generuje wyjście preprocesora. |
–public_equ | –defsym | 2.1, dokumentacja linkera ld | Opcja IAR definiuję etykietę asemblera o globalnej nazwie. W GCC tworzy symbol globalny o podanym adresie w pliku wyjściowym. |
-r | -g* | 3.9 | Generuje informacje dla debugera. |
–remarks | brak | Włącza uwagi/komentarze. | |
–require_prototypes | -Wmissing-prototype | 3.8 | Sprawdza czy funkcje są zadeklarowane zanim zostaną zdefiniowane. |
–section | –unique | 2.1, dokumntacja linkera ld | Zmienia nazwę sekcji. |
–separate_cluser_for… _initialized_variables |
brak | Oddziela zmienne zainicjalizowane i niezainicjalizowane. | |
–silent | brak | Włącza tryb pracy “cichej”. | |
–strict_ansi |
-ansi -pedantic |
3.4 I 3.8 | Sprawdza dokładnie zgodność ze standardem ISO/ANSI C. |
–thumb | -mthumb | 3.17.2 | Ustawia Thumb jako domyślny typ instrukcji. |
–use_unix_directory_ separators |
brak | Używa znaku “/” jako separatora w ścieżkach. Jest to domyślne zachowanie GCC. | |
–warnings_affect_exit_code | brak | Ostrzeżenia wpływają na kod wynikowy. Jest to domyślne zachowanie GCC. | |
–warnings_are_errors | -Werror | 3.8 | Ostrzeżenia są traktowane jak błędy. |
Zarządzenie konsolidacją
Wszystkie współczesne zestawy narzędzi do kompilacji zawierają konsolidator (linker), używany do łączenia plików wyjściowych kompilatora, asemblera i bibliotek w plik wykonywalny. Konsolidator może więc mieć pliki wejściowe trzech typów:
- wymagane w aplikacji pliki relokowalne obiektów,
- pliki bibliotek zawierające moduły biblioteczne konieczne w aplikacji,
- pliki sterujące pracą konsolidatora.
W niniejszym podrozdziale omówione zostało wykorzystanie i format pliku sterującego konsolidacją, lecz przed wejściem w szczegóły warto zrozumieć, jak konsolidator można wywoływać. Jako że aplikacja GCC pozwala na automatyczne wywoływanie narzędzi, z których się składa, można konsolidator wywoływać bezpośrednio lub pośrednio.
1 |
gcc plik.o –lc –o plik.elf |
jest równoważne z:
1 |
ld plik.o –lc –o plik.elf |
Obie powyższe komendy spowodują pobranie pliku plik.o, konsolidację go z plikiem libc.a z biblioteki standardowej i wygenerują plik w formacie wykonywalnym ELF nazywający się plik.elf.
Opcja „-lc” to zapis skrótowy, w którym „-l” każe linkerowi włączyć do wyniku bibliotekę, którą znajdzie przeszukując ścieżkę domyślną, środowisko oraz inne miejsca wskazane w linii poleceń, natomiast „c” oznacza nazwę tej biblioteki – libc.a lub libc.so (odpowiednio, wersję statyczną lub dynamiczną). Wiele systemów wbudowanych pracuje bez wykorzystania systemu Linux, więc dostępne dla nich są tylko wersje statyczne.