Zarządzanie kompilacją programu i podsystemu OUX
- Janusz Augustyński
- 23 kwi 2020
- 3 minut(y) czytania
Zaktualizowano: 15 lip 2022
Plik 0.mak w katalogu modułu lub programu
Można utworzyć plik o nazwie 0.mak, którego zawartość zostanie automatycznie włączona do pliku Makefile. Plik taki może zawierać pewne definicje, które są traktowane specjalnie.
Mianowicie, można zdefniować S_modules i przypisać jej listę modułów podsystemu OUX, z których korzysta dany program. Nie trzeba tak dołączać modułu base, ponieważ jest on zawsze dołączany.
Można zdefiniować S_packages i przypisać jej listę pakietów systemowych, których podsystem OUX automatycznie nie wyszukał, a są dostępne dla narzędzia systemowego pkg-config i mają być dołączone do modułu lub programu.
Można zdefiniować S_libraries i przypisać jej listę bibliotek, z którymi dodatkowo ma być połączony moduł lub program.
Można zdefiniować S_headers i przypisać jej listę plików nagłówkowych, których nie wyszukał automatycznie podsystem OUX, a mają być włączone do modułu lub programu.
Przykładowo:
S_modules := x_window_hi_cpu
S_packages := xcb
S_libraries := m
S_headers := 1.h
Plik 0.mak może również definiować szczególne cele tworzenia programu, np. install:
install:
$(INSTALL) -C -m 700 a.out "$(HOME)/lib/ocq-bis"
-pkill -x ocq-bis
fbrun -title 'run ocq-bis server' -text 'oux "$(HOME)/lib/ocq-bis"' >/dev/null 2>&1
Plik 0.h w katalogu modułu lub programu
Jeśli w katalogu znajduje się plik nagłówkowy 0.h, to zostanie on globalnie włączony do modułu lub programu, więc można w nim umieścić jakieś definicje preprocesora C konfigurujące globalnie program.
Konfiguracja sposobu kompilacji modułów i programu
W plikach 1.mak i E_coux_S_machine.h znajdujących się w podkatalogu compile podsystemu OUX są pojedyncze opcje kompilacji tego podsystemu.
W pliku 1.mak:
H_make_C_to_libs ustawiona na jakąś wartość włącza kompilację modułów do plików bibliotek dołączanych podczas wykonywania programu, a ustawiona na pusty ciąg znaków lub nie ustawiona włącza kompilację modułów do zawartości programu.
H_make_C_to_libs_C_replace_c_alloc ustawiona (jw.) włącza zastępowanie procedur przydzielania pamięci systemu operacyjnego w programie (w zasadzie dla bibliotek dołączanych podczas wykonywania programu), którymi są malloc, calloc, realloc, free, posix_memalign i malloc_usable_size, na procedury menedżera pamięci podsystemu OUX. Nie ustawiona (jw.) pozostawia oryginalne procedury przydzielania pamięci systemu operacyjnego w programie.
E_flow_drv_C_clock_monotonic ustawiona (jw.) włącza odliczanie czasu przy użyciu zegara nanosekundowego standardu POSIX 2008, nie ustawiona (jw.) włącza odliczanie czasu przy użyciu zegara milisekundowego standardu POSIX 2001.
E_io_C_aio ustawiona (jw.) włącza obsługę strumieni wejścia/wyjścia przy użyciu aio (asynchronous I/O) standardu POSIX, nie ustawiona (jw.) włącza obsługę strumieni wejścia/wyjścia przy użyciu standardu BSD lub nawet bez niego.
H_make_C_debug ustawiona (jw.) włącza sprawdzanie zakresów wartości parametrów procedur.
E_mem_Q_blk_C_debug ustawiona (jw.) włącza sprawdzanie poprawności działania menedżera bloków pamięci (E_mem_Q_blk).
H_make_S_cc ustawiona na listę nazw kompilatorów (np. clang gcc) decyduje o pierwszości użycia danego kompilatora, gdy jest dostępny.
W pliku E_coux_S_machine.h:
C_line_report zdefiniowana włącza wypisywanie raportów linii, nie zdefiniowana wycisza raporty linii.
C_id_small zdefiniowana przełącza na jeszcze mniejszy na danym procesorze rozmiar identyfikatorów, a nie zdefiniowana pozostawia oryginalnie mniejszy rozmiar identyfikatorów.
E_flow_C_errno_p zdefiniowana włącza przechowywanie adresu zmiennej systemowej errno, a nie zdefiniowana włącza czytanie tego adresu za każdym razem, gdy jest potrzebna wartość zmiennej.
Domyślne cele tworzenia modułów i programu
W pliku 2.mak znajdującym się w podkatalogu compile podsystemu OUX zdefiniowane są domyślne cele run programu, install modułów i uninstall modułów.
Jeśli uruchamiamy program przy użyciu make poleceniem
make run
to jest uruchamiany program z podkatalogu zapisanego w pliku Makefile katalogu podsystemu OUX. Jeśli moduły są kompilowane do postaci plików bibliotek dołączanych w czasie wykonywania, to program jest uruchamiany przy użyciu skompilowanych i nie zainstalowanych bibliotek. W celu uruchomienia programu otwierane jest okno pseudoterminala do wypisywania komunikatów.
Jako użytkownik root w systemie operacyjnym można z katalogu podsystemu OUX wydać polecenie
make install
które zainstaluje w systemie operacyjnym pliki bibliotek dołączanych dynamicznie reprezentujących moduły podsystemu OUX, jeśli oczywiście włączone jest kompilowanie do bibliotek.
Można również jako użytkownik root wydać polecenie
make uninstall
które te moduły odinstaluje.
W pliku 1.mak jest zdefiniowana zmienna H_make_S_usr_lib, która określa katalog w systemie operacyjnym, gdzie instalować pliki bibliotek.
Jeśli polecenie instalacji lub dezinstalacji zostanie wydane z podkatalogu danego programu, to najpierw zostaną wykonane opisane wyżej akcje dla modułów.
Comments