Programy użytkowe (utilities)

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

Programowanie Proceduralne

Fragment wykładu z języka C ( )

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

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

Programowanie w języku C++ Grażyna Koba

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Systemy Operacyjne. Ćwiczenia

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Praktyka programowania projekt

Kompilacja i scalanie programów w linii poleceń gcc i make

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

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

Programy pomocnicze: diff, make, systemy rcs i cvs, debugger. Zarządzanie wersjami.

Delphi podstawy programowania. Środowisko Delphi

L E X. Generator analizatorów leksykalnych

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Lifehacking dla R. Przemyślenia i rozwiązania w temacie reprodukowalności analiz i organizacji pracy

Zadanie programistyczne nr 3 z Sieci komputerowych

Pracownia specjalistyczna. Materiały przygotowali: mgr inż. Wojciech Frohmberg, mgr inż. Michał Kierzynka

Podstawy Kompilatorów

Podział programu na moduły

Tworzenie oprogramowania

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

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

Programowanie mikrokontrolerów AVR

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Laboratorium 2: Biblioteki statyczne i dynamiczne w języku C. mgr inż. Arkadiusz Chrobot

Część XII C++ Warunki zagnieżdżone Ćwiczenie 1 nazwisko40 2. nie przepisując komentarzy!

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 1. Krzysztof Lichota

MentorGraphics ModelSim

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

Programowanie współbieżne... (10) Andrzej Baran 2010/11

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Poprzedni wykład [ ] :

CLARION 2 - część II Tworzenie aplikacji

GRUB (GRand Unified Bootloader) - jest bootloaderem instalowanym standardowo w Ubuntu, potrafiącym obsłużyć kilka systemów jednocześnie (Multiboot).

Wstęp do programowania

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli.

Zadanie programistyczne nr 2 z Sieci komputerowych

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Microsoft Visual C Express Edition

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Programowanie w asemblerze Linkowanie

Aplikacja Mobilna. Platformy B2B Kompanii Biurowej

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Podstawy Programowania.

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

Wstęp. Opis programu :

2. System uprawnień w linuxie

Oracle PL/SQL. Paweł Rajba.

Połączenie aplikacji mobilnej z Facebookiem

Ćwiczenie 1. Przygotowanie środowiska JAVA

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Maple i wykresy. 1.1 Najpierw należy się zalogować. Jak to zrobić zostało opisane w moim poprzednim tutorialu.

Zadanie 2: Arytmetyka symboli

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

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

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

System kontroli wersji, system zarządzania kodem źródłowym

1. INWENTARYZACJA Wstęp. Ścieżka dostępu do modułu: Środki trwałe [I]nwentaryzacja

Schemat konstrukcja pliku Makefile

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Utworzenie pliku. Dowiesz się:

Wprowadzenie do biblioteki klas C++

Wstęp do programowania. Wykład 1

Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++

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

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

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

Uruchomienie Raspberry Pi

Java EE produkcja oprogramowania

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

PTI S1 Tabele. Tabele. Tabele

Metody Kompilacji Wykład 1 Wstęp

ALGORYTMY I PROGRAMY

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Projektowanie układów na schemacie

KROK 17 i 18. Cel: Tworzymy oddzielne okno - O autorze. 1. Otwórz swój program. 2. Skompiluj i sprawdź, czy działa prawidłowo.

PLUTO Sterownik bezpieczeństwa Skrócona Instrukcja obsługi oprogramowania. PlutoProgrammingManualPL_v7A.pdf 1

kodowanienaekranie.pl

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

mgr inż. Adam Pinkowski

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Podstawy Programowania

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Zajęcia nr 4 Programowanie obiektowe konstruktory. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Transkrypt:

nm wypisuje symbole w plikach wykonywalnych, plikach wynikowych (*.o) lub ich kolekcjach (bibliotekach, *.a). Składnia: nm plik. Plik wynikowy, z którego pochodzi symbol. Wartość symbolu. Typ symbolu (najczęściej spotykane): T w sekcji kodu (na ogół funkcja). U niezdefiniowany (w tym pliku). W symbol słaby. R w sekcji danych do odczytu. D w sekcji danych zainicjowanych. B w sekcji danych niezainicjowanych (BSS). małe litery symbole lokalne. wielkie globalne (zewnętrzne). 33

Przykład działania nm na prostym programie w C (po skompilowaniu, oczywiście). Po co nam nm? Przydaje się, gdy podczas kompilacji programu dostajemy błędy fazy linkowania np. niezdefiniowane symbole. Możemy wówczas poszukiwać jakiej biblioteki lub jakiego pliku wynikowego zapomnieliśmy włączyć, przeszukując symbole w bibliotekach. 34

Interesujące opcje nm: -C odmaglowuje (demangle) nazwy. -l pokazuje numery linii w plikach źródłowych, z których symbole pochodzą (konieczne -g przy kompilacji). Przykład: Kompilowane źródło Wydruk nm bez -C (nazwy przemaglowane). Wydruk nm -C (nazwy odmaglowane). Wydruk nm -Cl (nr linii, odmaglowanie). 35

make: inteligentna pomoc w rekompilacji programów. Ręczne kompilowanie programów jest nietrudne i OK, dopóki mamy niewiele plików źródłowych. Gdy plików zbierze się wiecej... Nieporęczne polecenie kompilacji. Nie warto przekompilowywać wszystkich plików, jeśli właśnie zmieniliśmy jeden. Ale skąd wiadomo, co trzeba przekompilować po wprowadzeniu naszej zmiany? Czasem nie tylko ten jeden, zmieniany plik. 36

Z pomocą przychodzi make sposób na poinstruowanie kompilatora jak należy przekompilować projekt. Przykład: mamy cztery pliki p1.cpp, p2.cpp, p3.c i main.cpp, które chcemy, by były skompilowane do p1.o, p2.o, p3.o, main.o, które następnie chcemy połączyć i dodając bibliotekę libbibl.a i otrzymać program wynikowy prog.out. "Ręcznie" postępowalibyśmy następująco: g++ -c p1.cpp p2.cpp main.cpp gcc -c p3.c g++ p1.o p2.o p3.o main.o -lbibl -o prog.out Zobaczmy, jak możemy opisać nasz projekt w języku make. Opis ten zapisujemy w pliku o nazwie Makefile lub makefile. wówczas wystarczy wydać polecenie make, żeby stworzyć program wynikowy, przekompilowując co potrzeba. 37

W naszym przypadku Makefile mógłby wyglądać następująco: Linia komentarza. Linie postaci "a : b" mówią "aby utworzyć a potrzebne jest b, oto przepis jak na podstawie b utworzyć a". Aby utworzyć prog.out potrzebne są p1.o, p2.o, p3.o, main.o, a przepis jest linię niżej. Aby utworzyć p1.o potrzebne jest p1.cpp, a przepis jest linię niżej. UWAGA: Linie zawierające "przepis" muszą zaczynać się od tabulatora (mcedit podświetla go na czerwono) inaczej make nie zrozumie naszych intencji. 38

W naszym przypadku Makefile mógłby wyglądać następująco: Przepis na "all" mówi co trzeba zrobić, aby utworzyć cały projekt. W naszym przypadku wystarczy powiedzieć, że "aby otrzymać all, potrzeba prog.out". Zwyczajowo dodaje się przepis na "clean", który mówi co zrobić, żeby wyczyścić projekt. make uruchomione bez parametrów wymusza przetwarzanie przepisów po kolei, co często jest równoważne "make all", czyli stara się utworzyć cały projekt. 39

Krótsza wersja, korzystająca z reguł wnioskowania (inference rules). Reguły wnioskowania mówią jak otrzymać wszystkie pliki jednego typu z plików drugiego typu, np. "Aby otrzymać potrzebne pliki *.o z plików *.cpp, zastosuj następujący przepis". Reguła wnioskowania "jak z *.cpp dostać *.o" Reguła wnioskowania "jak z *.c dostać *.o" Specjalne makra: $< plik przetwarzany przez regułę wnioskowania ("źródłowy"). $@ plik będący wynikiem przetwarzania przez regułę wnioskowania. 40

Wygodniej jest korzystać ze zmiennych. Teraz, gdy nasz program rozbuduje się o nowy plik, dopisujemy go do dwóch pierwszych linijek i po sprawie. Gdy chcemy przy kompilacji uwzględnić dodatkowe opcje (np. -g) możemy dopisać je do trzeciej linii. Podobnie łatwo radzimy ṡobie ze zmianą nazwy programu. Ważna zaleta make przekompilowane będą tylko te pliki, które trzeba make decyduje o tym na podstawie porównania czasów modyfikacji plików źródłowego i wynikowego. 41