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
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.