Dynamisk länkning och shared objects i FreeBSD: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
Line 21: | Line 21: | ||
=== Bygga och länka libfoo.so === | === Bygga och länka libfoo.so === | ||
Källkoden till libfoo.so ligger i foo.c och dess interface i foo.h. När vi kompilerar koden måste vi använda -fPIC flaggan. Vi använder det fullständiga kommandot: | Källkoden till libfoo.so ligger i foo.c och dess interface i foo.h. När vi kompilerar koden måste vi använda -fPIC flaggan. Vi använder det fullständiga kommandot: | ||
{{Box Kommando|gcc -std=c99 -Wall -Wextra -O2 -fPIC -c foo.c}} | {{Box Kommando|Kompilera foo.c|gcc -std=c99 -Wall -Wextra -O2 -fPIC -c foo.c}} | ||
[[Category:FreeBSD]] | [[Category:FreeBSD]] |
Revision as of 15:59, 1 January 2012
Detta ämne är under utveckling.
Problem med dynamisk länkning är ofta det som strular när man ska kompilera länka ihop något större program. Särskilt om man inte är root på systemet och måste installera sina program på andra ställen än systemets standardställen.
Bygga och länka mot en so-fil
Vi börjar med ett exempel på ett litet program som består av en exekverbar fil + en so-fil. Detta exempel kommer sedan användas för att åskådliggöra problemen runt so-filer och dynamisk länkning. Vår filstruktur i exemplet är:
. ├── Makefile ├── lib │ ├── Makefile │ ├── foo.c │ └── foo.h ├── main.c └── myapp
Bygga och länka libfoo.so
Källkoden till libfoo.so ligger i foo.c och dess interface i foo.h. När vi kompilerar koden måste vi använda -fPIC flaggan. Vi använder det fullständiga kommandot: Template:Box Kommando