top of page

Zarządzanie kompilacją programu i podsystemu OUX

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.

Ostatnie posty

Zobacz wszystkie
Klient HTTP/1.1 i HTTP/2

Do modułu “base” dodałem podstawową obsługę klienta HTTP/1.1 i HTTP/2, korzystając z szyfrowania TLS zapewnianego przez OpenSSL....

 
 
 

Comments


©2024 by technologia OUX / język C+. Stworzone przy pomocy Wix.com

bottom of page