Forum: Compiler & IDEs Makefile fuer shared Lib


von olpo (Gast)


Lesenswert?

Hallo,

ich brauch mal Hilfe um eine Shared Lib mit Makefile zu bauen.

1
HELLO_OBJS = hello.o
2
3
LIB_OBJS = foo.o
4
5
CFLAGS += -Wall -I../include
6
7
8
.PHONY: all
9
all: hello foo.so
10
11
hello: $(HELLO_OBJS)
12
  $(CC) -o $@ $^
13
14
foo.so: $(LIB_OBJS)
15
  $(CC) -fPIC -shared -o $@ $^


Oder kann ich Programm & eine Shared-Lib nicht mit einer Makefile bauen?
Wenn nicht, wie splitte ich das auf, so dass zwei Makefiles aufgerufen 
werden?

von Jim M. (turboj)


Lesenswert?

Ist das für PC oder für µC?
Hintergrund: Nicht alle µC Plattformen unterstützen shared libs.

von Stefan F. (Gast)


Lesenswert?

Da soll wohl für einen PIC sein.

Shared Libraries werden zur Laufzeit vom Betriebsystem aus einer Datei 
nachgeladen. Ich bezweifle, dass deine PIC Controller mit Betriebsystem 
und Dateisystem ausgestattet sind.

von Plopp (Gast)


Lesenswert?

Stefan U. schrieb:
> Da soll wohl für einen PIC sein.

PIC heißt hier "Position-independent code" (falls du das meinst).

von Stefan F. (Gast)


Lesenswert?

Ach so, dann habe ich das falsch interpretiert.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

olpo schrieb:
> Oder kann ich Programm & eine Shared-Lib nicht mit einer Makefile bauen?

Doch natürlich kann man das. Du musst Dein Programm einfach abhängig von 
der Lib machen. Und die Lib wiederum ist abhängig von den Sources der 
Lib. Wo ist denn Dein Problem?

: Bearbeitet durch Moderator
von Rolf M. (rmagnus)


Lesenswert?

Soll das Programm denn an die Shared Lib linken, oder soll es sie zur 
Laufzeit mit dlopen() öffnen? In ersterem Fall fällt auf, das der 
Bibiliothek der Prefix "lib" fehlt, dass beim Bauen deines Programms 
nirgends an die Bibliothek gelinkt wird und dass im Makefile die 
Abhängigkeit fehlt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.