Zajęcia z Unix-a cz 1 kompilacja GCC.

Podobne dokumenty
Powłoka bash. Kurs systemu Unix 1

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Bash - wprowadzenie. Bash - wprowadzenie 1/39

1 Przygotował: mgr inż. Maciej Lasota

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

System operacyjny Linux

Pracownia Komputerowa wykład III

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

Tworzenie skryptu: Skrypty powłoki

Powłoka (shell) Powłoka ksh

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Skrypty powłoki w systemie Linux

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Interpreter poleceń oraz zmienne środowiskowe

Wprowadzenie do programowania w powłoce

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

Technologie Informacyjne - Linux 3

PODSTAWY INFORMATYKI

Systemy operacyjne 11

Środowisko programisty Zestaw 7

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Powłoka interpreter poleceń systemu UNIX

Programowanie w BASH u Skrypt do ćwiczeń

Programowanie Proceduralne

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

Programowanie w Turbo Pascal

Programowanie skryptów powłoki

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Pracownia Komputerowa wykład III

Podstawy programowania skrót z wykładów:

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Przekierowanie wejścia wyjścia:

Programowanie w języku Python. Grażyna Koba

Fragment wykładu z języka C ( )

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

JAVA?? to proste!! Autor: wojtekb111111

Strona1. Linux. Skrypty powłoki

1 Podstawy c++ w pigułce.

12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Cw.12 JAVAScript w dokumentach HTML

Ćwiczenie nr 14: System Linux

Architektura systemów informatycznych. Powłoka systemowa Architektura procesora

Wstęp do systemu Linux

- wszystkie elementy - wszystkie elementy

Znaki globalne w Linuxie

PODSTAWY INFORMATYKI

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

chmod +x skrypt /bin/bash nazwa_skryptu ZMIENNA=123 ZMIENNA="wartość tekstowa" SCIEZKA="$HOME/plik" echo $SCIEZKA

Wprowadzenie do programowania shella (bash)

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie strukturalne i obiektowe

Wyrażenia regularne. Wyrażenia regularne 1/41

#!/bin/sh. if [ "$#"!= "1" ]; then echo "Skrypt uruchamiany z parametrem (sciezka do katalogu)" exit 1 fi

Laboratorium 5 Podstawy budowy skryptów w systemie UNIX cz. 1

Wstęp do systemu Linux

Podstawy programowania skryptów Sh

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Umieszczanie kodu. kod skryptu

Systemy operacyjne Programowanie w języku powłoki sh

Wstęp do Informatyki dla bioinformatyków

Trochę o plikach wsadowych (Windows)

2.5 Podstawy programowania w bash'u

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Linuks skrypty Część teoretyczna

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

JAVAScript w dokumentach HTML (1)

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Podstawy JavaScript ćwiczenia

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

ZMIENNE. Podstawy PHP

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

lekcja 8a Gry komputerowe MasterMind

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Kurs pisania skryptów w powłoce BASH

Podstawy informatyki

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

Pracownia Komputerowa wyk ad III

1 Podstawy c++ w pigułce.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

Programowanie komputerowe. Zajęcia 1

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Kompilator języka Basic można bezpłatnie pobrać ze strony z zakładki DOWNLOAD.

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Podstawy programowania w Bash'u

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Transkrypt:

Zajęcia z Unix-a cz 1 kompilacja GCC. Uwaga! W poniższym tekście każde wyrażenie typu <x> oznacza miejsce wstawienia odpowiedniej nazwy opisywanej przez x. Symbol *x+ oznacza występowanie x zero lub jeden raz. Kompilowanie plików źródłowych C postaci plików obiektów wymaga użycia opcji -c. gcc -c <nazwa_pliku>.c W wyniku otrzymuje się plik obiektu <nazwa_pliku>.o Jeśli plik nagłówka (.h) nie znajduje się w bieżącym katalogu ani w żadnym z katalogów zawierających nagłówki standarwych bibliotek to przy kompilacji stosowana jest opcja I <katalog_naglowka>. gcc c I <katalog_naglowka> <nazwa_pliku>.c Scalanie plików obiektów w program wykonywalny wymaga użycia opcji -o gcc o <nazwa_celu> <nazwa_pliku1>.o <nazwa_pliku2>.o <nazwa_celu> oznacza nazwę pliku wykowywalnego, która może, ale nie musi mied żadnego konkretnego rozszerzenia (takiego jak np. exe w systemie Winws). W wielu systemach uniksowych można połączyd kompilację i scalanie plików w jednym poleceniu: gcc o <nazwa_celu> <nazwa_pliku1>.c <nazwa_pliku2>.c Archiwum (bilbioteka statyczna) to zestaw wielu plików obiektów przechowywanych w pojedynczym pliku o rozszerzeniu.a. Tworzy się je poleceniem ar z opcjami cr : ar -crs lib<nazwa_bilbioteki>.a <nazwa_pliku1>.o <nazwa_pliku2>.o Archiwum łącza się na etapie scalania plików obiektów w program wykonywalny z wykorzystaniem opcji -L i -l. -L<nazwa_katalogu> : wskazuje położenie niestandarwe pliku biblioteki poza typowo przeszukiwanymi katalogami /lib, /usr/lib i katalogami opisanymi w ścieżkach zmiennej śrowiskowej LD_LIBRARY_PATH. -l<nazwa_biblioteki> : opcja scalania wybranej biblioteki z naszym programem wykonywalnym (celem). gcc o <nazwa_celu> <nazwa_pliku1>.c <nazwa_pliku2>.c L<nazwa_katalogu_biblioteki> l<nazwa_biblioteki>

Kompilacja i scalanie programów C poprzez polecenie make (LINUX) Polecenie make szuka w bieżącym katalogu pliku tekstowego o nazwie makefile lub Makefile w podanej kolejności. Plik ten zawiera reguły opisujące dla make co buwad (wykonywad ) i w jaki sposób. Reguły pliku make mają następującą formę ogólną: <nazwa_celu>: <zależnośd> *<zależnośd>+ * + <tabulator> <polecenie> [<tabulator> <polecenie>] * + Cel jest plikiem binarnym(wykonywalnym) lub obiektowym (.o), który chcemy utworzyd. Polecenia są krokami takimi jak wywołania kompilatora lub poleceo powłoki koniecznymi dla utworzenia celu. Jeśli cel nie istnieje make go buduje zgodnie z poleceniem. W przeciwnym razie porównuje daty tworzenia celu z datami jego zależności. Jeśli są one póżniejsze niż cel (przynajmniej jedna) cel podlega przebuwaniu, bo zmienił się jakiś kod. Przykład: prog.e: m1.c m2.c gcc o prog.e m1.o m2.o m1.o: m1.c m1.h gcc c m1.c m2.o: m2.c m1.h gcc c m1.c clean: rm *.o *.e Wybrane zmienne automatyczne stosowane w plikach make : $@ -symboliczna nazwa pliku celu w regule $* -rdzeo nazwy pliku (bez rozszerzenia po kropce) $< -nazwa pliku pierwszej zależności od reguły $^ -lista wszystkich zależności w regule $? - lista zależności nowszych niż cel Zmienne lokalne w plikach make sa przypisywane różnym poleceniom na początku skryptu. Przypisanie takie (nierekursywne) ma postad: <zmienna>:=<polecenie lub wartośd> np. : CC := gcc CFLAGS := -g Odwołanie takich zmiennych występuje w formie $(<zmienna>) np. :

$(CC) $(CFLAGS) Ogólna reguła kompilacji plików źródłowych C w poleceniu make z użyciem zmiennych automatycznych może mied postad:.c.o: $(CC) $(CFLAGS) c $*.c Będzie ona niejawnie cytowana przy tworzeniu celu: <plik_wykonywalny>: <plik>.c <plik>.c $(CC) $(CFLAGS) $^ -o $@ Przykład prostego pliku Makefile z użyciem reguł niejawnych, zmiennych lokalnych i zmiennych automatycznych: CC := gcc CFLAGS := -g.c.o: $(CC) $(CFLAGS) c $*.c prog.e: m1.c m2.c $(CC) $(CFLAGS) $^ -o $@ clean: rm f *.o *.e W jednym pliku Makefile można definiowad wiele różnych celów kompilowad i scalad wiele programów. Wywołanie make odbywa się z odpowiednim parametrem stanowiącym nazwę celu i może zawierad opcje: make [-<opcje>] <nazwa_celu lub plik_wykonywalny> np.: make prog.e make clean. Wybrane opcje polecenia make (nie muszą występowad): -n : polecenia są składane i wyświetlane, ale nie wykonywane (bre testów) -I <katalog> : katalog poszukiwania plików make poza katalogiem bieżącym -s : (silent) make nie wypisuje poleceo na ekranie -f <plik> : nazwa pliku make inna niż makefile lub Makefile -k : nie przerywa działania jeśli nie uda się zbuwad jednego z celów -d : (debug) wyświetlane są informacje debugowania -W<plik> : wykonuje się tak jakby wymieniony plik był zmodyfikowany ( testowania)

Zadania 1. Utworzyd w katalogu mowym (w myślnym, po zalogowaniu Ubuntu) katalog programy oraz utworzyd pliki źródłowe języka C - main.c, modul.c oraz plik nagłówkowy modul.h. Wpisad przy pomocy wolnego edytora treści plików podane przez prowadzącego laboratorium na tablicy. Program generuje napisy powitalne języka C wyświetlane w konsoli. 2. Skompilowad pliki źródłowe C przy pomocy polecenia gcc z opcją -c w celu uzyskania plików obiektów (.o). Utworzyd plik programu wykonywalnego witaj.e poprzez scalanie wytworzonych plików obiektów poleceniem gcc z opcją o. Uruchomid program. 3. Skompilowad i scalid powyższe pliki źródłowe w program wykonywalny jednym poleceniem gcc, bez etapu pośredniego wytwarzania plików obiektów. Uruchomid program. 4. Utworzyd w katalogu bieżącym plik makefile zawierający dwa cele: witaj.e kompilacja i scalanie programu wynikowego o nazwie zgodnej z nazwą celu, w oparciu o źródła C z punktu 2 clean usunięcie z bieżącego katalogu wytworzonych plików obiektów (.o) i pliku wykonywalnego.

Zajęcia z Unix-a cz 2 skrypty BASH. 1. Ustalenie rodzaju interpretera w pierwszej linii skryptu #!scieżka shella np. #!/bin/bash 2. Wykonywanie skryptu Plikowi skryptu nadaje się atrybut wykonywalności: chmod u+x nazwa_skryptu i uruchamia się go w bieżącym katalogu poprzez wywołanie./nazwa_skryptu 3. Linia komentarza -poprzedzona znakiem # # treśd komentarza Cytowanie przy użyciu znaku maskujacego \ zapobiega interpretacji następnego znaku jako znaku specjalnego (sterującego) 4. Wyświetlanie napisów poprzez cudzysłowy( ) lub apostrofy ( ): echo treśd napisu lub echo treśd napisu np. echo mój komentarz lub echo mój komentarz Opcja (-n) komendy echo echo n napis oznacza brak przejścia nowej linii po wykonaniu napisu. 5. Wybrane znaki specjalne powłoki: * wolny łaocuch? wolny znak `polecenie` zacytowanie polecenia (para apostrofów wstecznych) w celu przejęcia jego wyjscia np. rm f `spis_plikow usuniecia` [abc] wolny znak ze zbioru abc np. cat [abc]* ; separator w grupie poleceo [a-z] wolny znak ze zbioru od a z tekst para apostrofów otacza daną łaocuchową (likwiduje działanie znaków specjalnych np. $ umieszczonych w środku!!!!) tekst para cudzysłowów otacza łaocuch 6. Parametry skryptu: $1, $2, $9 kolejne parametry uruchomionego skryptu $0 nazwa samego skryptu $* napis zawierający ciąg wszystkich parametrów $@ ciąg napisów o wartościach parametrów $# liczba parametrów skryptu $? kod (status) po wykonaniu ostatniego polecenia 7. Zmienne powłoki są deklarowane w momencie przypisania Przypisanie: nazwa_zmiennej=wartośd (nie wolno zostawiad spacji wokół =) tablica*indeks+=wartośd

tablica=(wartośd_1 wartośd_2 wartośd_n) echo @zmienna zmienna2=@zmienna1 echo ${tablica[indeks]} zmienna=${tablica[indeks]} echo ${tablica[*]} wyświetlenie całej tablicy (* lub @)) echo ${#tablica[*]} ilośd (#) elementów całej tablicy (* lub @)) Indeksy tablic są liczone od zera i nie muszą byd kolejne. Wybrane zmienne predefiniowane: HOME ścieżka stępu katalogu mowego, USER login użytkownika, PATH zbiór ścieżek przeszukiwania OSTYPE łaocuch opisu systemu operacyjnego UID identyfikator użytkownika RANDOM generator kolejnej liczby losowej Zmienne predefiniowane są globalne; zmienne lokalne można eksportowad procesów potomnych poprzez: export nazwa_zmiennej 8. Wyrażanie warunków Odbywa się poprzez polecenia: test wyrażenie-testowe lub [<spacja>wyrażenie-testowe<spacja>] Wyrażenia testowe dla liczb całkowitych a i b a eq b a=b a ne b a b a le b a b a lt b a<b a ge b a b a gt b a>b Wyrażenia testowe dla łaocuchów -z łaocuch łaocuch zerowy (pusty) -n łaocuch łaocuch niezerowy łaocuch1 == łaocuch2 łaocuchy identyczne łaocuch1!= łaocuch2 łaocuchy różne Wyrażenia testowe dla plików -e plik plik istnieje -d katalog katalog istnieje -r plik plik istnieje odczytu -w plik plik istnieje zapisu -x plik plik istnieje wykonania plik1 nt plik2 plik1 jest nowszy niż plik12 plik1 ot plik2 plik1 jest starszy niż plik12

Wyrażenia testowe logiczne ( wyr ) wyrażenie prawdziwe! wyr wyrażenie fałszywe wyr1 a wyr2 koniunkcja wyr1 o wyr2 alternatywa W wyrażeniu testowym znaki operatorów muszą byd odseparowane spacjami. 9. Wczytywanie danych od użytkownika: read zmienna1 zmienna2 Przykład: echo Podaj imie i nazwisko: read IMIE NAZWISKO echo Imię: $IMIE echo Nazwisko: $NAZWISKO 10. Łączenie poleceo koniunkcja: polecenie1 && polecenie2 alternatywa: polecenie1 polecenie2 { polecenie1; polecenie2; } - grupa poleceo wykonywanych przez powłokę ( polecenie1; polecenie2; ) - grupa poleceo wykonywanych przez podpowłokę 11. Wyrażenia arytmetyczne zmienna=$((wyrażenie)) expr wyrażenie!!!! W wyrażeniu po expr argumenty i operatory muszą byd oddzielane spacjami!!!! Operatory w wyrażeniach: +, -, *, =(logiczne porównanie),!=, >, <, >=, <=, &(iloczyn logiczny), (suma logiczna), length(długośd_łaocucha), : (porównanie) Instrukcja echo $? zwraca kod wyjścia z wyrażenia (0 jeśli OK.) Przykład: expr 5 = 4 - zwraca 0 expr length programowanie skryptow expr 1 + 2 \* 4 - zwraca wartośd 9 expr $z + 3 \< 2 Nawiasy (, ) oraz operatory, które potencjalnie mogą byd znakami specjalnymi powłoki należy cytowad np. \*, \&, \), \<, \> itp. 12. Instrukcja if występuje jako: if [ wyrażenie(warunek) ] then polecenia fi

lub w postaci if [ wyrażenie(warunek) ] then polecenia else inne polecenia fi Przykład: if [ $# -eq 2 ] then echo Skrypt ma 2 parametry else echo Skrypt nie ma 2 parametrów fi 13. Pętla for Pierwsza składnia: for zmienna in lista_możliwości lista_poleceo Przykład usuwanie podkatalogów kat1, kat2 katalogu bieżącego for I in./kat1./kat2 rm rf $I/* Druga składnia (dla parametrów pozycyjnych): for zmienna lista_poleceo Przykład odczytanie parametrów skryptu (pozycyjnych) for I echo $I Trzecia składnia (praktycznie tak jak w języku C): for ((warunek_startu; warunek_kooca; warunek_przyrostu))

lista_poleceo Przykład wyświetlanie liczb od 1 4 for ((I=1; I<=4; I ++)) echo $I 14. Instrukcja case konująca wyboru pewnych grup poleceo zależnie od wartości zmiennej testującej case zmienna_testowa in wzorzec1 ) grupa_poleceo_1 ;; wzorzec2 ) grupa_poleceo_2 ;;... * ) inne_przypadki ( opcjonalnie) ;; esac We wzorcach można wykorzystywad znaki *,? oraz zbiory znaków np. *0-9], [a-z]. Kilka wzorców dla jednej grupy poleceo oddziela się symbolem oznaczającym operację lub. Przykład: case $1 in START poczatek ) echo parametr START ;; # koniec opcji STOP ) echo parametr STOP ;; # koniec opcji esac Zadania 1. Utworzyd przy pomocy skryptu prostą stronę HTML (patrz przykład na le) na żółtym tle z napisem Moja strona HTML utworzona przez skrypt wycentrowanym poziomo u góry strony. Przykład kodu HTML strony dla zadania 1: <HTML><HEAD><TITLE> Tytuł mojej strony</title></head> <BODY BGCOLOR =YELLOW> <P ALIGN=CENTER><H1> To jest strona HTML wytworzona przez skrypt </H1></P> </BODY> </HTML>

2. Napisad skrypt wyświetlający swoją nazwę, ilośd parametrów wywołania oraz wykaz tych parametrów zależnie od wyboru konanego przez użytkownika. 3. Napisad skrypt powłoki Bash lista.sh umożliwiający uzupełnianie o dane kolejnych osób listy studentów, przechowywanych w pliku tekstowym o nazwie studenci utworzonym w podkatalogu projekty własnego katalogu mowego. Dane obejmują pozycje: Nazwisko, Imię, Adres, Telefon, Grupa dziekaoska. 4. Napisad skrypt powłoki Bash budujący plik tekstowy wykonywalne z nazwami plików wykonywalnych istniejących w bieżącym katalogu. 5. Napisad skrypt polaczenie z 3 parametrami. Dwa pierwsze to nazwy plików tekstowych, które skrypt powinien ze sobą połączyd w celowym pliku opisanym trzecim parametrem. Należy sprawdzid istnienie plików argumentów oraz pliku wynikowego. Jeśli plik wynikowy już istnieje to trzeba go utworzyd od nowa.