]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Zakończono redagowanie 14 rozdziału.
authorxf0r3m <jakubstasinski@protonmaill.com>
Mon, 29 Apr 2024 11:57:08 +0000 (13:57 +0200)
committerxf0r3m <jakubstasinski@protonmaill.com>
Mon, 29 Apr 2024 11:57:08 +0000 (13:57 +0200)
articles/terminallog/Linux.Podstawy.html

index 318e43240880e4ffe9c557754f11bce179cd9f37..c5a02f4975bc78510dfee707ae9f7009084d4b68 100644 (file)
@@ -11326,8 +11326,8 @@ error_name=org.xfce.Xfconf.Error.PropertyNotFound reply_serial=25087
           tekstu). 
         </p>
         <p>
-          W uproszeczniu zamiana kodu źródłowego na postać wykonywalną przez
-          komputer nosi nazwę <strong>kompilacji</strong>. Jednaj jak się za
+          W uproszczniu zamiana kodu źródłowego na postać wykonywalną przez
+          komputer nosi nazwę <strong>kompilacji</strong>. Jednak jak się za
           chwilę okaże jest tylko połowa sukcesu (w większości przypadków).
           Obecnie w dystrybucjach Linuksa dostępne są dwa kompilatory
           <em>GNU C Compiler</em> (gcc) oraz <em>Clang/LLVM</em>. W tym
@@ -11353,7 +11353,7 @@ int main() {
 }
 </pre>
         <p>
-          Zapisany powyżej bardzo prosty program, zapisałem w pliku
+          Zapisany powyżej bardzo prosty program, zapisałem w pliku
           <em>hello.c</em>. Pliki kodu źródłowego języka C powinny mieć
           rozszerzenie <em>.c</em>. Chociaż wiemy, że w przypadku Uniksów nie
           to znaczenia, to dla utrzymania porządku w plikach, warto je pokrótce
@@ -11373,7 +11373,7 @@ xf0r3m@vm-cac72df:~/C$ cc hello.c
           działania na standardowym wyjściu. Wynikiem jego pracy jest
           pojawienie się tuż obok pliku <em>a.out</em>, który ma odpowiednii
           rodzaj uprawnień, aby móc go odrazu uruchomić - jest to plik
-          wykonywalny efekt - działania kompilatora na powierzonym mu kodzie.
+          wykonywalny, efekt działania kompilatora na powierzonym mu kodzie.
           Przekonać się możemy o tym wydając poniższe polecenie:
         </p>
 <pre class="code-block">
@@ -11398,17 +11398,17 @@ Hello, World!
           W przypadku pojednyczych programów takie działanie może wystarczyć,
           jednak rzadko się zdarza, aby programy były pojedynczymi plikami
           kodu źródłowego, zazwyczaj zawierają go znacznie, znacznie więcej.
-          Sama praca z pojedyncz plikiem, może być niepożądana przez
+          Sama praca z pojedynczym plikiem, może być niepożądana przez
           programistów jak i kompilatory mogą mieć problem z ich
           przetworzeniem.
         </p>
         <p>
           Główne składowe programów są najczęściej grupowane a w pojedynczych
-          plikach umieszcza się ich poszczególne elementy. Kompilator również
+          plikach umieszcza się ich poszczególne elementy. Kompilacja również
           wygląda nieco inaczej. Wymagane jest użycie opcji <em>-c</em> w celu
           utworzenia dla każdego ze składowych
           <strong>plików obiektowych</strong> -  zawierających kod obiektowy,
-          który finalnie przyjmie formę pliku wykonywalnego. Załóżmy, że mam
+          który finalnie przyjmie formę pliku wykonywalnego. Załóżmy, że mamy
           tylko dwa pliki.
         </p>
         <p>
@@ -11483,7 +11483,8 @@ Hello, World!
           zapomnimy wspomnieć o bibliotece konsolidatorowi to zostaniem nam
           zwrócony błąd. Chociaż błedy związane z niewłaściwym odwołaniem się
           do biblioteki, może nie wynikać z naszych ustawień konsolidatora.
-          Może to również być wynikiem braku zainstalownych w systemie.
+          Może to również być wynikiem braku zainstalownych bibliotek w
+          systemie.
         </p>
         <p>
           Do wskazania bibliotek służy opcja <em>-l</em> kompilatora,
@@ -11492,7 +11493,7 @@ Hello, World!
           dystrybucji jest to ten sam katalog - kiedy program typu <em>init</em>
           to <em>systemd</em>), wystarczy podać jej nazwę. W przeciwnym razie
           musimy na początku wskazać ścieżkę, na której można znaleźć tą
-          bibliotekę - za pomocą opcji <em>-L</em> a następnie podać jej nazwę
+          bibliotekę - za pomocą opcji <em>-L</em>, a następnie podać jej nazwę
           za pomocą wspomanianej już wcześniej opcji <em>-l</em>.
         </p>
         <p>
@@ -11522,12 +11523,13 @@ $ cc -o badobject badobject.o -lcurses -L/usr/junk/lib -lcrud
           Jak wiemy konsolidator zawsze dodaje do programów standardową
           bibliotekę języka C - <em>libc.a</em>. Ten plik jest
           <strong>biblioteką statyczną</strong>. Oznacza to, że konsolidator
-          podczas tworzenia właściwego pliku wykonywalne będzie kopiować do
+          podczas tworzenia właściwego pliku wykonywalnego będzie kopiować do
           naszego pliku fragmenty kodu maszynowego z biblioteki, wówczas plik
           biblioteki nie będzie nam potrzeby do uruchomienia. 
         </p>
         <p>
-          Tego typu ma dwie dość znaczące wady. Pierwszą z nich są rozmiary
+          Tego typu rozwiązanie ma dwie dość znaczące wady. Pierwszą z nich są
+          rozmiary
           bibliotek statycznych, a co za tym idzie rozmiary naszych programów
           oraz zajętosć pamięci operacyjnej podczas ich pracy. Drugą wadą, ale
           i nie kiedy zaletą, jest fakt przechowywanie kopii kodu biblioteki
@@ -11544,8 +11546,8 @@ $ cc -o badobject badobject.o -lcurses -L/usr/junk/lib -lcrud
           <strong>biblioteki współdzielone</strong>. Podczas konsolidacji z
           wykorzystaniem bibliotek współdzielonych, nie są kopiowane całe
           fragmenty kodu, a tylko odwołania do nazw w bibliotece. W tym
-          przypadku biblioteka jest ładowana do pamięci w momencie gdy są 
-          potrzebne. Dodatkową zaletą tego rozwiązania jest fakt, że procesy
+          przypadku biblioteka jest ładowana do pamięci w momencie gdy jest
+          potrzebna. Dodatkową zaletą tego rozwiązania jest fakt, że procesy
           mogą współdzielić ze sobą obszar pamięci, w którym znajdują się
           biblioteki, aby nie ładować ich za każdym razem, gdy uruchamiamy
           jakiś program. 
@@ -11577,7 +11579,7 @@ $ cc -o badobject badobject.o -lcurses -L/usr/junk/lib -lcrud
           <li>W jaki sposób należy dokonać konsolidacji z bibliotekami
             współdzielonymi?</li>
           <li>Jakie mogą wyniknąć problemy podczas używania tych bibliotek i
-            jak ich ominąć?</li>
+            jak ich uniknąć?</li>
         </ul>
         <h4>Wypisywanie zależności od bibliotek współużytkowanych</h4>
         <p>
@@ -11683,9 +11685,9 @@ ldconfig: Ścieżka `/usr/lib' podana więcej niż raz
           bardziej szczegółowych komunikatów.
         </p>
         <p>
-          Program <em>ld.so</em> może wykorzystać wykorzystać jescze jedno
+          Program <em>ld.so</em> może wykorzystać jeszcze jedno
           miejsce w celu znalezienia informacji na temat gdzie mogą znajdować
-          się biblioteki - zmienne <strong>LD_LIBRARY_PATH</strong>. Nie
+          się biblioteki - zmienną <strong>LD_LIBRARY_PATH</strong>. Nie
           we wszystkich systemach jest ona zdefiniowana i może zostać
           wykorzystana do wskazania niestandardowych bibliotek tuż przed
           uruchomieniem programu.
@@ -11706,7 +11708,7 @@ ldconfig: Ścieżka `/usr/lib' podana więcej niż raz
           wcześniej - w przypadku bibliotek statycznych). Tutaj niezbędne
           będzie również wskazanie katalogu w celu dodania go do ścieżki
           wyszukiwania bibliotek. W tego typu przypadkach nie należy posługiwać
-          się ustawieniemi konsolidatora dynamicznego.
+          się ustawieniami konsolidatora dynamicznego.
         </p>
         </p>
           Opcja, o której mowa to: <code class="code-inline">-Wl,-rpath</code>.
@@ -11734,7 +11736,7 @@ xf0r3m@laptop-5cfe659:~$ cc -o myprog myprog.o -Wl,rpath=/opt/pt/lib -L/opt/pt/l
           <code class="code-inline">LD_LIBRARY_PATH</code>. Zawartość tej
           zmiennej jest odczytywana przez konsolidator, który następnie
           przeszukuje podane ścieżki pod kątem występowania bibliotek. Ta
-          zmianna ma pierwszeństwo przez pozostałymi lokalizacjami, w których
+          zmiana ma pierwszeństwo przez pozostałymi lokalizacjami, w których
           mogą wystąpić biblioteki w systemie. Dlatego też ustawienie jej
           globalnie gdzieś w systemie (np. w plikach konfiguracyjnych powłoki)
           może spowodować znaczy spadek wydajności systemu. Jeśli już musimy
@@ -11859,11 +11861,11 @@ xf0r3m@laptop-5cfe659:~$ cc -c -I/opt/pt/include netstats.c
           była szybka i przyjmna. Jednak w 99% przypadków z jakim możemy
           spotkać się raczej tak nie będzie folder będą zawierać podkatalogi
           a w nich sterty plików ręczna kompilacja, przy nie których
-          mogła by zająć tygodnie jak nie lata. Dlatego też powstało narzędze
+          mogła by zająć tygodnie jak nie lata. Dlatego też powstało narzędzie
           typu <strong>make</strong>. Narzędzie <em>make</em> ma za zadanie
           zarządzać procesem kompilacji. Mimo, że jest to potężny program to
           jest on dość prosty w działaniu. Jeśli gdzieś w paczkach z kodem
-          znajdziemy plik <em>makefile</em> lub <em>Makefile</em> ozanacza to
+          znajdziemy plik <em>makefile</em> lub <em>Makefile</em> oznacza to
           możemy użyć programu <em>make</em> do kompilacji projektu.
         </p>
         <p>
@@ -11875,7 +11877,7 @@ xf0r3m@laptop-5cfe659:~$ cc -c -I/opt/pt/include netstats.c
           zależnościami.
         </p>
         <p>
-          W czasie wykonywania celów, narzędzię postępuje zgodnie z
+          W czasie wykonywania celów, narzędzie postępuje zgodnie z
           <strong>regułą</strong> (ang. <em>rule</em>), która może np. określać
           sposób w jaki kod źródłowy ma zostać zmieniony na plik obiektowy.
           Sam <em>make</em> posiada już zdefiniowane reguły, ale możemy je
@@ -11915,8 +11917,8 @@ myprog: $(OBJS)
           <code class="code-inline">myprog:</code> widzimy już jakieś konkrety:
           pierwszym jest odwołanie się do makra, jest ono rozwiązywane do
           nazw zapisanych na początku pliku <em>Makefile</em>, w pliku nie
-          znajduje się żadne inne elementy systemu <em>Make</em> tak więc
-          ten cel jest o tych plików uzależniony. Warto dodać, że
+          znajduje się żadne inne elementy systemu <em>Make</em> o tej nazwie
+          tak więc ten cel jest od tych plików uzależniony. Warto dodać, że
           <em>Make</em> zakłada, że plki źródłowe znajdują się w tym samym
           katalogu co pliki <em>Makefile</em>. Uruchomienie polecenia
           <em>make</em> w tym katalogu prezentuje się następująco.
@@ -11948,7 +11950,7 @@ cc -o myprog aux.o main.o
           Każde polecenie w pliku <em>Makefile</em> musi zostać
           wprowadzone w nowej linii i poprzedzone
           znakiem tabulacji równym czterem znakom spacji.
-          Makro <code class="code-inline">$(CC)</code> jest zmienną, która
+          Makro <code class="code-inline">$(CC)</code>
           przechowywuje nazwę programu kompilatora C, w wiekszości przypadku
           jej wartość będzie ustawiona na <em>cc</em>.
         </p>
@@ -11980,7 +11982,8 @@ xf0r3m@laptop-7bf2993:~/prog/C$ make
 make: Nie ma nic do zrobienia w 'all'.
 </pre>
         <p>
-          Natomiast jeśli chociażby zmienimy datę, któregoś z plików kodu
+          Natomiast jeśli chociażby zmienimy czas modyfikacji, któregoś z 
+          plików kodu
           źródłowego za pomocą prostego polecenia <em>touch</em>. Wówczas plik
           obiektowy będzie starszy niż plik źródłowy i <em>Make</em> dokona
           budowy naszego programu ponownie.
@@ -12000,7 +12003,7 @@ cc -o myprog aux.o main.o
         <p>
           Uzupełniając wywołanie programu <em>make</em> o różne opcje oraz
           argumenty możemy zmusić go do wykonani kilku przydatnych czynności.
-          Najprostrzym przykładem może być zmiana wartości makra <em>CC</em>,
+          Najprostszym przykładem może być zmiana wartości makra <em>CC</em>,
           wskazując inny niż domyślny kompilator.
         </p>
 <pre class="code-block">
@@ -12021,7 +12024,7 @@ cc  foo.o   -o foo
         <p>
           Tego typu uruchmianie narzędzia <em>make</em> bedzie sprawdzać się
           w przypadku programów zapisanych w jednym pliku lub programów, w
-          których jezykiem nie jest C. Jest to drobre rozwiązanie gdy dopiero
+          których jezykiem nie jest C. Jest to dobre rozwiązanie gdy dopiero
           rozpoczynamy pracę z danym językiem i nie wiem jeszcze jak działa
           kompilator czy inne narzędzia z nim związane. Jeśli nawet zbudowanie
           celu się niepowiedzie to i tak otrzymamy informację zwrotną co jest
@@ -12054,7 +12057,7 @@ cc  foo.o   -o foo
         <ul>
           <li><strong>CFLAGS</strong> - opcje kompilatora C. <em>Make</em>
           przekazuje je kompilatorowi w czasie tworzenia kodu obiektowego z
-          plikików <em>.c</em>.</li>
+          plików <em>.c</em>.</li>
           <li><strong>LDFLAGS</strong> - opcje przekazywane do konsolidatora w
           czasie tworzenia pliku wykonywalnego z plików obiektowych.</li>
           <li><strong>LDLIBS</strong> - w przypadku gdy niechcemy łączyć opcji
@@ -12107,14 +12110,15 @@ cc  foo.o   -o foo
             <li><strong>test</strong> lub <strong>check</strong> - cel pozwala
             sprawdzić czy po skompilowaniu wszystko działa jak należy.</li>
             <li><strong>depend</strong> - cel ten tworzy zależności
-            wywołują kompilator ze specjalną opcją -M nakazującą mu sprawdzenie
+            wywołując kompilator ze specjalną opcją -M nakazującą mu sprawdzenie
             kodu. Cel ten nie jest już powszechnie używany, aczkolwiek mogą
             zdarzyć się projekty, które będą wymagać wywołanie tego celu.</li>
             <li><strong>all</strong> - najczęściej pierwszy cel w pliku
             <em>Makefile</em>. W wielu projektach będziemy spotykać się z
             potrzebą wywołanie tego celu, a nie samego pliku wykonywalnego.
             Wiele projektów składa się z wielu plików wykonywalnych i często
-            nie ma tego jednego głównego. Natomiast użycie celu <em>all</em>.
+            nie ma tego jednego głównego. Natomiast użycie celu <em>all</em>
+            pozwala na zbudowanie ich wszystkich w trakcie jednej czynności.
             </li>
         </ul>
         <h3 id="14.2.6.makefilesstyles">14.2.6. Organizowanie pliku Makefile</h3>
@@ -12151,7 +12155,7 @@ PROGS=boring trite
 </pre>
         <p>
           W pozostałej częsci plików występują już cele, które składają główne
-          pliki wykonywalne. Jeśli trzeb przygować regułę dla pliku obiektowego
+          pliki wykonywalne. Jeśli trzeba przygować regułę dla pliku obiektowego
           należy ją umieścić zaraz nad regułą programu pliku wykonywalnego.
           Jeśli z tego pliku obiektowego korzysta więcej plików wykonywalnych
           niż ten jednen to trzeba je przenieść nad nie wszystkie.
@@ -12184,7 +12188,7 @@ PROGS=boring trite
           programowania, zmieniło się to wraz z rozpowszechnieniem się takich
           języków jak <strong>Perl</strong> a w poźniejszych latach
           <strong>Python</strong>. Niektóre z narzędzi systemowych zostały
-          przepisane z klasycznego C do np. Pytona - na przykład narzędziem
+          przepisane z klasycznego C do np. Pythona - na przykład narzędziem
           <em>whois</em>. Języki skryptowe obecnie przechylają szalę na swoją
           korzyść względem języków kompilowanych, mimo to zalety takich języków
           jak C oraz wpisanie się tego języka w rdzeń nauk komputerowych
@@ -12237,7 +12241,7 @@ PROGS=boring trite
           Uniksowych. Język ten ma ogromne możliwości porównywalne z Pythonem,
           jednak nie jest on taki prosty w użyciu. Jego głównym zadaniem jest
           obróbka tekstu. Obecnie wiele narzędzi wykorzystuje jego możliwości
-          np. znany wszyskim system kontroli wersji - <em>Git</em>.</li>
+          np. znany wszystkim system kontroli wersji - <em>Git</em>.</li>
           <li><strong>PHP</strong> - jest językiem służacym do dynamicznego
           tworzenie treści na stronach internetowych. Można wykorzystać go
           do generowania stron hipertekstowych oraz do modyfikacji
@@ -12246,7 +12250,8 @@ PROGS=boring trite
         <p>
           Innym wartym wspomnienia językiem jest <strong>m4</strong>
           odpowiedzialny z przetwarzanie makr. Dostępny jest on w systemie
-          GNU <em>autotools</em>.
+          GNU <em>autotools</em>. Bierze udział w automatycznym generowaniu
+          pliku <em>Makefile</em> (Wiecej w 15 rozdziale).
         </p>
         <h2 id="14.5.java">14.5. Język Java</h2>
         <p>