Appearance
8. Libraries
2
Libraries sind Programme #
- Kompilierter Objectcode
- Für Architektur kompiliert (
x86-64
/armv7
) - Können Binary ausgeliefert werden
- Für das Kompilieren sind allerings Headers
.h
notwendig - ... diese im Source Format
- Für das Kompilieren sind allerings Headers
16.05.2023
8. Libraries
3
Statische Libraries #
- Endung
.a
- werden einem Programm zur Kompilierzeit statisch hinzugelinkt
- ... und sind somit im Programm fix eingebaut
16.05.2023
8. Libraries
4
Dynamisch gelinkte Libraries #
- Endung
.so
(bei darwin.dll
) - Sind in den Library Directories zu finden
- Systemabhängig:
/lib
,/usr/lib
- Konfiguriertbar via:
/etc/ld.so.conf
- Systemabhängig:
- Bei Target
/lib
und/usr/lib
16.05.2023
8. Libraries
5
Keine dynamisch gelinkte Libs im Kernel #
Im Kernel können keine Libraries dynamisch gelinkt werden!!
(Sidenote: und auch keine Floating Point Operationen durchgeführt werden)
16.05.2023
8. Libraries
Tracing von Library und System Calls
6
c
// random.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int i;
srandom(time(NULL));
i = random() % 51 + 10;
printf("Zufallszahl {1-.6} = %0.1f\n", i/10.0);
}
16.05.2023
8. Libraries
Tracen
7
bash
# Auf Host kompilieren
gcc random.c -o random
# Ausführen
./random
# welche shared libs?
ldd random
# trace lib calls
ltrace ./random
16.05.2023
8. Libraries
Tracen
8
bash
# System calls tracen
strace ./random
16.05.2023
8. Libraries
9
Tracen von calls auf dem Target #
- Buildroot / Busybox kompiliert
strace
undltrace
nicht standardmässig mit. Diese müssen nachkonfiguriert werden.
16.05.2023