![Page 1: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/1.jpg)
Polecenie make, tworzenie własnej biblioteki
Przemysław GawrońskiD-10, p. 234
Wykład 12
21 maja 2020
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 1 / 31
![Page 2: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/2.jpg)
Outline
1 Wspomaganie procesu tworzenia oprogramowania
2 Dyrektywy kompilacji warunkowejPodział programu na pliki
3 make
4 Biblioteki statyczne
5 Biblioteki dynamiczne
6 Biblioteki ładowane dynamicznie
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 2 / 31
![Page 3: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/3.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 4: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/4.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 5: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/5.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 6: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/6.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 7: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/7.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 8: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/8.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 9: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/9.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 10: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/10.jpg)
Wspomaganie procesu tworzenia oprogramowania
IDE – Eclipse, NetBeans, Visual Studio, CodeBlocks, CodeLite,...
Edytor – vim, emacs, kate, ...
Kompilator – gcc, icc, ...
Debugger – gdb, ddd, ...
System kontroli wersji – Git is a fast, scalable, distributed revisioncontrol system with an unusually rich command set that providesboth high-level operations and full access to internals.
Automatyzacja procesu kompilacji – cmake, make - The makeutility will determine automatically which pieces of a large programneed to be recompiled, and issue the commands to recompile them.
cppcheck - Tool for static C/C++ code analysis. Cppcheck is acommand-line tool that tries to detect bugs that your C/C++compiler doesn’t see.
valgrind is a programming tool for memory debugging, memory leakdetection, and profiling.(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 3 / 31
![Page 11: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/11.jpg)
Dyrektywy kompilacji warunkowej
Dyrektywy #ifdef i #ifndef oznaczają ”jeśli zdefiniowano” i ”jeślinie zdefiniowano”
Ogólna postać dyrektywy #ifndef:#ifndef nazwa-makra#define nazwa-makrasekwencja instrukcji#endif
Tylko jeśli nazwa-makra nie zostało uprzednio zdefiniowane zapomocą dyrektywy #define, wówczas ma miejsce kompilacja kodusekwencja instrukcji.
Wszelkie wyrażenia występujące po dyrektywach #endif sąignorowane.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 4 / 31
![Page 12: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/12.jpg)
Dyrektywy kompilacji warunkowej
Dyrektywy #ifdef i #ifndef oznaczają ”jeśli zdefiniowano” i ”jeślinie zdefiniowano”
Ogólna postać dyrektywy #ifndef:#ifndef nazwa-makra#define nazwa-makrasekwencja instrukcji#endif
Tylko jeśli nazwa-makra nie zostało uprzednio zdefiniowane zapomocą dyrektywy #define, wówczas ma miejsce kompilacja kodusekwencja instrukcji.
Wszelkie wyrażenia występujące po dyrektywach #endif sąignorowane.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 4 / 31
![Page 13: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/13.jpg)
Dyrektywy kompilacji warunkowej
Dyrektywy #ifdef i #ifndef oznaczają ”jeśli zdefiniowano” i ”jeślinie zdefiniowano”
Ogólna postać dyrektywy #ifndef:#ifndef nazwa-makra#define nazwa-makrasekwencja instrukcji#endif
Tylko jeśli nazwa-makra nie zostało uprzednio zdefiniowane zapomocą dyrektywy #define, wówczas ma miejsce kompilacja kodusekwencja instrukcji.
Wszelkie wyrażenia występujące po dyrektywach #endif sąignorowane.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 4 / 31
![Page 14: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/14.jpg)
Dyrektywy kompilacji warunkowej
Dyrektywy #ifdef i #ifndef oznaczają ”jeśli zdefiniowano” i ”jeślinie zdefiniowano”
Ogólna postać dyrektywy #ifndef:#ifndef nazwa-makra#define nazwa-makrasekwencja instrukcji#endif
Tylko jeśli nazwa-makra nie zostało uprzednio zdefiniowane zapomocą dyrektywy #define, wówczas ma miejsce kompilacja kodusekwencja instrukcji.
Wszelkie wyrażenia występujące po dyrektywach #endif sąignorowane.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 4 / 31
![Page 15: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/15.jpg)
Podział programu na pliki
main.c lista.c lista.h#include "lista.h"
int main(void){node *head = i_i_b(NULL ,6);
...
return 0;}
#include "lista.h"
node *i_i_b(node *h, int n){...
}
#ifndef LISTA_H#define LISTA_H
#include <stdio.h>#include <stdlib.h>
typedef struct tnode {int value;struct tnode *next;} node;
node *i_i_b(node *, int);#endif
gcc -c main.c -Wall gcc -c lista.c -WallKonsolidacja:gcc -o lista.exe lista.o main.o
Kompilacja i konsolidacja:gcc -o lista.exe lista.c main.c -Wall
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 5 / 31
![Page 16: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/16.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:
Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:
make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 17: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/17.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:
Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:
make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 18: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/18.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:Kompilacja: gcc -c main.c -Wall
Kompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:
make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 19: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/19.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -Wall
Konsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:
make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 20: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/20.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:
make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 21: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/21.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:
make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 22: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/22.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 23: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/23.jpg)
makefile
Zawartość pliku makefile:lista.exe: main.o lista.o
gcc -o lista.exe lista.o main.o -Walllista.o: lista.c lista.h
gcc -c lista.c -Wallmain.o: main.c lista.h
gcc -c main.c -Wall
Polecenie make uruchamia:Kompilacja: gcc -c main.c -WallKompilacja: gcc -c lista.c -WallKonsolidacja: gcc -o lista.exe lista.o main.o -Wall
Kolejne uruchomienia polecenia make:make: ’lista.exe’ jest aktualne.
make → selektywna kompilacja → konsolidacja.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 6 / 31
![Page 24: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/24.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 25: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/25.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].
Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 26: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/26.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 27: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/27.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 28: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/28.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 29: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/29.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 30: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/30.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.
komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 31: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/31.jpg)
make
W pliku o nazwie makefile umieszczamy polecenia dla kompilatora.
Wszystkie linie zawierające polecenia gcc ... muszą zaczynać się odznaku tabulatora [TAB].Zawartość pliku makefile:
reguły jawne, np.
lista.exe: main.o lista.ogcc -o lista.exe lista.o main.o -Wall
reguły niejawne (domyślne), np.
main.o: lista.h
definicje zmiennych, np.
OBJECTS = main.o lista.orm $(OBJECTS)
komendy wyboru, dyrektywy, np. odczytanie innego pliku makefile.komentarze - każda linijka zaczynająca się znakiem #.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 7 / 31
![Page 32: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/32.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:
Kompilacja: cc -c -o main.o main.cKompilacja: cc -c -o lista.o lista.cKonsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 33: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/33.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:
Kompilacja: cc -c -o main.o main.cKompilacja: cc -c -o lista.o lista.cKonsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 34: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/34.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:Kompilacja: cc -c -o main.o main.c
Kompilacja: cc -c -o lista.o lista.cKonsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 35: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/35.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:Kompilacja: cc -c -o main.o main.cKompilacja: cc -c -o lista.o lista.c
Konsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 36: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/36.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:Kompilacja: cc -c -o main.o main.cKompilacja: cc -c -o lista.o lista.cKonsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 37: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/37.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:Kompilacja: cc -c -o main.o main.cKompilacja: cc -c -o lista.o lista.cKonsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 38: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/38.jpg)
makefile - przykłady
Zawartość pliku makefile:OBJECTS = main.o lista.olista.exe: $(OBJECTS)
gcc -o lista.exe $(OBJECTS)lista.o: lista.hmain.o: lista.h.PHONY: cleanclean:
rm $(OBJECTS)
Polecenie make uruchamia:Kompilacja: cc -c -o main.o main.cKompilacja: cc -c -o lista.o lista.cKonsolidacja: gcc -o lista.exe main.o lista.o
Polecenie make clean uruchamia:Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 8 / 31
![Page 39: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/39.jpg)
makefile - przykłady
Zawartość pliku makefile:# Source , Executable , Includes , Library DefinesINCL = lista.hSRC = lista.c main.cOBJ = $(SRC:.c=.o)LIBS =EXE = lista.exe
# Compiler , Linker DefinesCC = /usr/bin/gcc -10CFLAGS = -Wall -O2LIBPATH = -L.LDFLAGS = -o $(EXE) $(LIBPATH) $(LIBS)CFDEBUG = -Wall -g -DDEBUG $(LDFLAGS)RM = /bin/rm -f
# Compile%.o: %.c
$(CC) -c $(CFLAGS) $*.c
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 9 / 31
![Page 40: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/40.jpg)
makefile - przykład cd
Zawartość pliku makefile:# Link$(EXE): $(OBJ)
$(CC) $(LDFLAGS) $(OBJ)$(OBJ): $(INCL)
# Create a gdb/dbx Capable Executabledebug:
$(CC) $(CFDEBUG) $(SRC)# Clean Up.PHONY:cleanclean:
$(RM) $(OBJ) core a.out
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 10 / 31
![Page 41: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/41.jpg)
makefile - przykład cd
Polecenie make uruchamia:
Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:
Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 42: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/42.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.c
Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:
Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 43: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/43.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.c
Konsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:
Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 44: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/44.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:
Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 45: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/45.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:
Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 46: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/46.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 47: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/47.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:
Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 48: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/48.jpg)
makefile - przykład cd
Polecenie make uruchamia:Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.cKompilacja: /usr/bin/gcc-10 -c -Wall -O2 main.cKonsolidacja: /usr/bin/gcc-10 -o lista.exe -L. lista.o main.o
Polecenie make debug uruchamia:Kompilacja i konsolidacja:/usr/bin/gcc-10 -Wall -g -DDEBUG -o lista.exe -L. lista.c main.c
Polecenie make clean uruchamia:Usuwanie: rm main.o lista.o
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 11 / 31
![Page 49: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/49.jpg)
Biblioteki statyczne
Biblioteka statyczna - archiwum plików binarnych powstałych wwyniku kompilacji.
Tworzenie biblioteki statycznej:
1 Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.c2 Dodanie pliku do archiwum liblista.a: ar rcsv liblista.a lista.o3 Indeksowanie biblioteki: ranlib liblista.a
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 12 / 31
![Page 50: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/50.jpg)
Biblioteki statyczne
Biblioteka statyczna - archiwum plików binarnych powstałych wwyniku kompilacji.Tworzenie biblioteki statycznej:
1 Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.c2 Dodanie pliku do archiwum liblista.a: ar rcsv liblista.a lista.o3 Indeksowanie biblioteki: ranlib liblista.a
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 12 / 31
![Page 51: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/51.jpg)
Biblioteki statyczne
Biblioteka statyczna - archiwum plików binarnych powstałych wwyniku kompilacji.Tworzenie biblioteki statycznej:1 Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.c
2 Dodanie pliku do archiwum liblista.a: ar rcsv liblista.a lista.o3 Indeksowanie biblioteki: ranlib liblista.a
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 12 / 31
![Page 52: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/52.jpg)
Biblioteki statyczne
Biblioteka statyczna - archiwum plików binarnych powstałych wwyniku kompilacji.Tworzenie biblioteki statycznej:1 Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.c2 Dodanie pliku do archiwum liblista.a: ar rcsv liblista.a lista.o
3 Indeksowanie biblioteki: ranlib liblista.a
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 12 / 31
![Page 53: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/53.jpg)
Biblioteki statyczne
Biblioteka statyczna - archiwum plików binarnych powstałych wwyniku kompilacji.Tworzenie biblioteki statycznej:1 Kompilacja: /usr/bin/gcc-10 -c -Wall -O2 lista.c2 Dodanie pliku do archiwum liblista.a: ar rcsv liblista.a lista.o3 Indeksowanie biblioteki: ranlib liblista.a
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 12 / 31
![Page 54: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/54.jpg)
Biblioteki statyczne
Polecenie nm -s liblista.a wypisuje indeks biblioteki:
Archive index:insert item begin in lista.oinsert item end dwa in lista.oinsert item end in lista.oprint list in lista.odelete all in lista.odelete node in lista.ofind value in lista.osearch node in lista.oinsert item sort in lista.odel node in lista.o
lista.o:0000000000000290 T delete all00000000000002d0 T delete node0000000000000590 T del node00000000000003f0 T find value
U free0000000000000000 T insert item begin0000000000000180 T insert item end00000000000000b0 T insert item end dwa0000000000000470 T insert item sort
U mallocU printf
0000000000000240 T print list
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 13 / 31
![Page 55: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/55.jpg)
Biblioteki statyczne - makefile - struktura katalogów
main.c
makefilelib
lista.clista.hmakefile
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 14 / 31
![Page 56: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/56.jpg)
Biblioteki statyczne - makefile
CC = gcc -10AR = arRANLIB = ranlibCFLAGS = -Wall -Wunused -O2
OBJ = lista.oSRC = lista.cHDR = lista.hTARGET = liblista.a
$(TARGET): $(OBJ)$(AR) rcsv $(TARGET) $(OBJ)$(RANLIB) $(TARGET)rm -f $(OBJ)@echo $@ "IS READY !!!"
$(OBJ): $(HDR)%.o:%.c
$(CC) -c $(CFLAGS) $*.c
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 15 / 31
![Page 57: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/57.jpg)
Biblioteki statyczne - makefile
OBJ = main.oSRC = main.cHDR = ./lib/lista.hLIBS = -llistaEXE = lista.exeOTHERS = ./lib/liblista.a
CC = gcc -10CFLAGS = -Wall -Wunused -O2LIBPATH = -L./lib/LDFLAGS = $(LIBPATH) $(LIBS) -static
$(EXE): $(OBJ) $(OTHERS)$(CC) -o $(EXE) $(OBJ) $(LDFLAGS)rm -f $(OBJ)@echo $@ "IS READY !!!"
$(OBJ): $(HDR)%.o:%.c
$(CC) -c $(CFLAGS) $*.c
$(OTHERS):cd ./lib; make
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 16 / 31
![Page 58: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/58.jpg)
Biblioteki statyczne
Polecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 59: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/59.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.c
cd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 60: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/60.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; make
make[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 61: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/61.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’
gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 62: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/62.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.c
ar rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 63: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/63.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.o
a - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 64: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/64.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.o
ranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 65: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/65.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.a
rm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 66: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/66.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.o
liblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 67: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/67.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!
make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 68: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/68.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’
gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 69: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/69.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -static
rm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 70: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/70.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.o
lista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 71: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/71.jpg)
Biblioteki statyczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make static lib/lib’gcc-10 -c -Wall -Wunused -O2 lista.car rcsv liblista.a lista.oa - lista.oranlib liblista.arm -f lista.oliblista.a IS READY!!!make[1]: Opuszczenie katalogu ’make static lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista -staticrm -f main.olista.exe IS READY!!!
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 17 / 31
![Page 72: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/72.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 73: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/73.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 74: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/74.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 75: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/75.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 76: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/76.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 77: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/77.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 78: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/78.jpg)
Biblioteki statyczne - ar
ar vq mylib.a myobj1.o myobj2.o - dołącz pliki myobj1.omyobj2.o do końca archiwum mylib.a
ar vt mylib.a - wypisz nazwę każdego pliku w archiwum wraz zatrybutami plików (prawa, timestamp, właściciel, grupa i rozmiar).
ar vr mylib.a myobj1.o myobj3.o - istniejące pliki (myobj1.o) sązastępowane ich nowymi wersjami, a nowe pliki (myobj3.o) sądodawane na koniec archiwum.
ar vrb myobj1.o mylib.a myobj4.o - umieszcza plik myobj4.o warchiwum mylib.a przed plikiem myobj1.o.
ar vru mylib.a myobj1.o - wstawia tylko te z wymienionych plików,które są nowsze od istniejących w archiwum plików o tych samychnazwach.
ar vd mylib.a myobj1.o - usuwa myobj1.o z archiwum.
ar vx mylib.a myobj1.o - wyciąga plik myobj1.o z archiwum.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 18 / 31
![Page 79: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/79.jpg)
Biblioteki dynamiczne
Linkowanie dynamiczne - plik wykonywalny zawiera nazwy plików, zktórych kod odpowiednich funkcji bibliotecznych zostanie załadowanyw trakcie działania programu.
Linkowanie dynamiczne:
ABI - Application Binary Interface - łatwa dystrybucja, instalacja idziałanie bez rekompilacji.mniejszy rozmiar pliku wykonywalnego,biblioteki dzielone (shared) - wszystkie programy działające w danejchwili dzielą jedną kopię załadowaną do pamięci w momenciepierwszego użycia.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 19 / 31
![Page 80: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/80.jpg)
Biblioteki dynamiczne
Linkowanie dynamiczne - plik wykonywalny zawiera nazwy plików, zktórych kod odpowiednich funkcji bibliotecznych zostanie załadowanyw trakcie działania programu.Linkowanie dynamiczne:
ABI - Application Binary Interface - łatwa dystrybucja, instalacja idziałanie bez rekompilacji.mniejszy rozmiar pliku wykonywalnego,biblioteki dzielone (shared) - wszystkie programy działające w danejchwili dzielą jedną kopię załadowaną do pamięci w momenciepierwszego użycia.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 19 / 31
![Page 81: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/81.jpg)
Biblioteki dynamiczne
Linkowanie dynamiczne - plik wykonywalny zawiera nazwy plików, zktórych kod odpowiednich funkcji bibliotecznych zostanie załadowanyw trakcie działania programu.Linkowanie dynamiczne:
ABI - Application Binary Interface - łatwa dystrybucja, instalacja idziałanie bez rekompilacji.
mniejszy rozmiar pliku wykonywalnego,biblioteki dzielone (shared) - wszystkie programy działające w danejchwili dzielą jedną kopię załadowaną do pamięci w momenciepierwszego użycia.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 19 / 31
![Page 82: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/82.jpg)
Biblioteki dynamiczne
Linkowanie dynamiczne - plik wykonywalny zawiera nazwy plików, zktórych kod odpowiednich funkcji bibliotecznych zostanie załadowanyw trakcie działania programu.Linkowanie dynamiczne:
ABI - Application Binary Interface - łatwa dystrybucja, instalacja idziałanie bez rekompilacji.mniejszy rozmiar pliku wykonywalnego,
biblioteki dzielone (shared) - wszystkie programy działające w danejchwili dzielą jedną kopię załadowaną do pamięci w momenciepierwszego użycia.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 19 / 31
![Page 83: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/83.jpg)
Biblioteki dynamiczne
Linkowanie dynamiczne - plik wykonywalny zawiera nazwy plików, zktórych kod odpowiednich funkcji bibliotecznych zostanie załadowanyw trakcie działania programu.Linkowanie dynamiczne:
ABI - Application Binary Interface - łatwa dystrybucja, instalacja idziałanie bez rekompilacji.mniejszy rozmiar pliku wykonywalnego,biblioteki dzielone (shared) - wszystkie programy działające w danejchwili dzielą jedną kopię załadowaną do pamięci w momenciepierwszego użycia.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 19 / 31
![Page 84: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/84.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:
1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 85: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/85.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,
2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 86: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/86.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,
2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 87: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/87.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 88: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/88.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 89: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/89.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 90: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/90.jpg)
Biblioteki dynamiczne
Tworzenie biblioteki dynamicznej:1 Kompilacja: gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c,2 Tworzenie biblioteki gcc-10 -shared -o liblista.so lista.o.
Opcja -fPIC umożliwia stworzenie Position Independent Code.Biblioteki dynamiczne powinny używać adresów względnych,ponieważ mogą być wywoływane wielokrotnie.
Opcja -shared służy do stworzenia zależnej od architektury dzielonejbiblioteki dynamicznej.
Konsolidacja z biblioteką dynamiczną: gcc-10 -o lista.exe main.o-L./lib/ -llista
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 20 / 31
![Page 91: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/91.jpg)
Biblioteki dynamiczne - makefile
CC = gcc -10
OBJ = lista.oSRC = lista.cHDR = lista.hTARGET = liblista.so
CFLAGS = -Wall -Wunused -O2LDFLAGS = -shared -o $(TARGET)
$(TARGET): $(OBJ)$(CC) $(LDFLAGS) $(OBJ)rm -f $(OBJ)@echo $@ "IS READY !!!"
$(OBJ): $(HDR)
%.o:%.c$(CC) -c $(CFLAGS) $*.c
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 21 / 31
![Page 92: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/92.jpg)
Biblioteki dynamiczne - makefile
OBJ = main.oSRC = main.cHDR = ./lib/lista.hLIBS = -llistaEXE = lista.exeOTHERS = ./lib/liblista.so
CC = gcc -10CFLAGS = -Wall -Wunused -O2LIBPATH = -L./lib/LDFLAGS = $(LIBPATH) $(LIBS)
$(EXE): $(OBJ) $(OTHERS)$(CC) -o $(EXE) $(OBJ) $(LDFLAGS)rm -f $(OBJ)@echo $@ "IS READY !!!"
$(OBJ): $(HDR)%.o:%.c
$(CC) -c $(CFLAGS) $*.c
$(OTHERS):cd ./lib; make
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 22 / 31
![Page 93: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/93.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 94: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/94.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.c
cd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 95: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/95.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; make
make[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 96: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/96.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’
gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 97: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/97.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.c
gcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 98: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/98.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.o
rm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 99: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/99.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.o
liblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 100: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/100.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!
make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 101: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/101.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’
gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 102: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/102.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llista
rm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 103: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/103.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.o
lista.exe IS READY!!!Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 104: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/104.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 105: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/105.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.
Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 106: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/106.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 107: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/107.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)
liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 108: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/108.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not found
libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 109: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/109.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 110: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/110.jpg)
Biblioteki dynamicznePolecenie make uruchamia:
gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
Polecenie ldd - wyświetla zależności od obiektów dzielonych.Polecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => not foundlibc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
export LD LIBRARY PATH=/path/lib:$LD LIBRARY PATH(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 23 / 31
![Page 111: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/111.jpg)
Biblioteki dynamiczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
export LD LIBRARY PATH=‘pwd‘:$LD LIBRARY PATHPolecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)
liblista.so => ./lib/liblista.so (0x00007ffd077dd000)libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 24 / 31
![Page 112: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/112.jpg)
Biblioteki dynamiczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
export LD LIBRARY PATH=‘pwd‘:$LD LIBRARY PATHPolecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => ./lib/liblista.so (0x00007ffd077dd000)
libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 24 / 31
![Page 113: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/113.jpg)
Biblioteki dynamiczne
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.ccd ./lib; makemake[1]: Wejście do katalogu ’make dynamic lib/lib’gcc-10 -c -fPIC -Wall -Wunused -O2 lista.cgcc-10 -shared -o liblista.so lista.orm -f lista.oliblista.so IS READY!!!make[1]: Opuszczenie katalogu ’make dynamic lib/lib’gcc-10 -o lista.exe main.o -L./lib/ -llistarm -f main.olista.exe IS READY!!!
export LD LIBRARY PATH=‘pwd‘:$LD LIBRARY PATHPolecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff7f78f000)liblista.so => ./lib/liblista.so (0x00007ffd077dd000)libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f7d34641000)/lib64/ld-linux-x86-64.so.2 (0x00007f7d34a0c000)
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 24 / 31
![Page 114: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/114.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 115: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/115.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 116: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/116.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 117: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/117.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.
int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 118: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/118.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.
char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 119: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/119.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 120: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/120.jpg)
Biblioteki ładowane dynamicznie
Funkcje obsługi dynamicznego ładowania bibliotek dla systemu Linuxz nagłówka dlfcn.h:
void *dlopen(const char *filename, int flag); - ładowanie bibliotekiz pliku filename.
RTLD LAZY - lazy binding. Symbole (adresy funkcji) są rozwiązywanew miarę potrzeb.RTLD NOW - wszystkie niezdefiniowane symbole z biblioteki sąrozwiązawane.
void *dlsym(void *handle, const char *symbol); - zwraca adressymbol z załadowanej biblioteki handle lub NULL w przypadkuniepowodzenia.int dlclose(void *handle); - zamyka/wyładowuje bilbliotekę handle.char *dlerror(void); - zwraca łańcuch z opisem ostatniego błędu.
Flaga dla konsolidatora -ldl.
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 25 / 31
![Page 121: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/121.jpg)
Biblioteki ładowane dynamicznie - przykład - main.c
#include <dlfcn.h>#include <stdio.h>
typedef struct tnode{int value;struct tnode *next;
} node;
int main(void){void *mylib = dlopen("liblista.so", RTLD_LAZY);if (! mylib){fprintf(stderr , "%s\n", dlerror ());exit(EXIT_FAILURE);
}
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 26 / 31
![Page 122: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/122.jpg)
Biblioteki ładowane dynamicznie - przykład - main.c
node *(* desk_iib)(node*, int) = dlsym(mylib , "insert_item_begin");char *error = dlerror ();if (error){fprintf(stderr , "%s\n", error);dlclose(mylib);exit(EXIT_FAILURE);
}
void (* desk_pl)(node*) = dlsym(mylib , "print_list");error = dlerror ();if (error){fprintf(stderr , "%s\n", error);dlclose(mylib);exit(EXIT_FAILURE);
}(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 27 / 31
![Page 123: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/123.jpg)
Biblioteki ładowane dynamicznie - przykład - main.c
node *(* desk_dl)(node*) = dlsym(mylib , "delete_all");error = dlerror ();if (error){fprintf(stderr , "%s\n", error);dlclose(mylib);exit(EXIT_FAILURE);
}dlerror (); /* Clear any existing error */
void *handle = dlopen("libm.so", RTLD_LAZY);if (! handle) {fprintf(stderr , "%s\n", dlerror ());exit(EXIT_FAILURE);
}
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 28 / 31
![Page 124: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/124.jpg)
Biblioteki ładowane dynamicznie - przykład - main.c
double (*sq)(double) = dlsym(handle , "sqrt");error = dlerror ();if (error){fprintf(stderr , "%s\n", error);dlclose(handle);exit(EXIT_FAILURE);
}node *head=desk_iib(NULL , (*sq)(100.));head=desk_iib(head , sq (121.));head=desk_iib(head , sq (144.));desk_pl(head);desk_dl(head);
dlclose(mylib);dlclose(handle);return 0;
}(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 29 / 31
![Page 125: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/125.jpg)
Biblioteki ładowane dynamicznie - przykład - makefile
OBJ = main.oSRC = main.cEXE = lista.exeLIBS = -ldl
CC = gcc -10
CFLAGS = -Wall -Wunused -O2LDFLAGS = $(LIBS)
$(EXE): $(OBJ)$(CC) -o $(EXE) $(OBJ) $(LDFLAGS)rm -f $(OBJ)@echo $@ "IS READY !!!"
%.o:%.c$(CC) -c $(CFLAGS) $*.c
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 30 / 31
![Page 126: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/126.jpg)
Biblioteki ładowane dynamicznie - przykład
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.cgcc-10 -o lista.exe main.o -ldlrm -f main.olista.exe IS READY!!!
export LD LIBRARY PATH=‘pwd‘:$LD LIBRARY PATHPolecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff49dc8000)
libdl.so.2 => /lib/x86 64-linux-gnu/libdl.so.2(0x00007f702c8d2000)libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f702c529000)/lib64/ld-linux-x86-64.so.2 (0x00007f702caf8000)
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 31 / 31
![Page 127: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/127.jpg)
Biblioteki ładowane dynamicznie - przykład
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.cgcc-10 -o lista.exe main.o -ldlrm -f main.olista.exe IS READY!!!
export LD LIBRARY PATH=‘pwd‘:$LD LIBRARY PATHPolecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff49dc8000)libdl.so.2 => /lib/x86 64-linux-gnu/libdl.so.2(0x00007f702c8d2000)
libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f702c529000)/lib64/ld-linux-x86-64.so.2 (0x00007f702caf8000)
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 31 / 31
![Page 128: Przemysław Gawroński D-10, p. 234gawronski/pp_is_2020/... · 2020-05-21 · cppcheck - Tool for static C/C++ code analysis. Cppcheck is a command-line tool that tries to detect](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2e51e241cb71ca3b3ee3/html5/thumbnails/128.jpg)
Biblioteki ładowane dynamicznie - przykład
Polecenie make uruchamia:gcc-10 -c -Wall -Wunused -O2 main.cgcc-10 -o lista.exe main.o -ldlrm -f main.olista.exe IS READY!!!
export LD LIBRARY PATH=‘pwd‘:$LD LIBRARY PATHPolecenie ldd lista.exe wypisuje:
linux-vdso.so.1 (0x00007fff49dc8000)libdl.so.2 => /lib/x86 64-linux-gnu/libdl.so.2(0x00007f702c8d2000)libc.so.6 => /lib/x86 64-linux-gnu/libc.so.6 (0x00007f702c529000)/lib64/ld-linux-x86-64.so.2 (0x00007f702caf8000)
(Wykład 12) Polecenie make, tworzenie własnej biblioteki 21 maja 2020 31 / 31