Skip to content
On this page
8. Libraries
1

Libraries

16.05.2023
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
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
  • 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 und ltrace nicht standardmässig mit. Diese müssen nachkonfiguriert werden.
16.05.2023