Forum: PC-Programmierung Dynamisches linken einen Bibliothek


von Martin (Gast)


Lesenswert?

Hallo Community,

Ich beginne gerade mit der C-Programmierung unter Linux. Meine ersten 
Hallo Welt Programme funktionieren.

Nun möchte ich die Posix Thread Library (libpthread) verwenden. Die 
Bibliothek soll jedoch dynamisch gelinkt werden.

Kann mir dabei jemand beim Erstellen des passenden Makefiles helfen?
Leider komme ich damit noch nicht zurecht.

Danke im Voraus!!

lg Martin

von Rolf Magnus (Gast)


Lesenswert?

Dynamisches Linken ist unter Linux normalerweise der Default, und die 
pthread-Library gibt man normalerweise nicht direkt an. Stattdessen gibt 
man dem Compiler und dem Linker die Kommandozeilen-Option -pthread mit.

von Martin (Gast)


Lesenswert?

Hallo Rolf,

Danke für den Tipp, jedoch funktioniert es leider noch nicht.

Es lässt sich alles kompilieren und auch linken (Mit einem 
Crosscompiler). Wenn ich es auf meiner Zielplattform (OpenWRT auf einem 
Router) ausführe, bekomme ich einen Fehler: "Illegal Instruction".

Woran liegt denn des?

Hier mein Makefile:
1
# build helloworld executable when user executes "make"
2
3
TARGET = helloworld
4
SRC = $(TARGET).c
5
STAGING_DIR = /home/user/Downloads/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir_mipsel
6
LIBPATH = $(STAGING_DIR)/lib
7
LIBS = -pthread
8
9
LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/lib
10
11
all: $(TARGET).c
12
  $(CC) -Wall $(LDFLAGS) -L$(LIBPATH) $(LIBS) -o $(TARGET) $(SRC) 
13
14
# remove object files and executable when user executes "make clean"
15
clean: rm *.o $(TARGET)

Danke für weitere Tipps!

lg Martin

von Klaus W. (mfgkw)


Lesenswert?

Habe jetzt von dem wrt-Zeugs keine Ahnung...

An dem Makefile vermisse ich irgendwie, daß für einen
anderen Rechner kompiliert werden soll.
Ich vermute, daß so für den lokalen Rechner übersetzt wird.

Deine funktionierenden Helloworld waren auch für OpenWRT?
Wie wurden die denn kompiliert?

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Klaus,

Ja das Hello World funktioniert. Es gibt nämlich noch ein Toplevel 
Makefile pro Package, welches eben das "Source Makefile" aufruft.

Im Anhang habe ich das Top Level Makefile upgeloaded.

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.