mikrocontroller.net

Forum: PC-Programmierung Dynamisches linken einen Bibliothek


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:

# build helloworld executable when user executes "make"

TARGET = helloworld
SRC = $(TARGET).c
STAGING_DIR = /home/user/Downloads/OpenWrt-SDK-brcm-2.4-for-Linux-i686/staging_dir_mipsel
LIBPATH = $(STAGING_DIR)/lib
LIBS = -pthread

LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/lib

all: $(TARGET).c
  $(CC) -Wall $(LDFLAGS) -L$(LIBPATH) $(LIBS) -o $(TARGET) $(SRC) 

# remove object files and executable when user executes "make clean"
clean: rm *.o $(TARGET)

Danke für weitere Tipps!

lg Martin

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.