C: Multithreading

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo miteinander,

    ich will mir für meinen RasPi einen Wecker in C programmieren (später mal mit Display).
    Dazu würde ich gerne verschiedene Threads benutzen. Wo wir auch schon zu meinem Problem kommen:

    Ich habe wiringPi installiert und versucht mit piThreadCreate() einen Thread zu erstellen. Compiliert wird mit dem Befehl "gcc -o". Ich bekomme allerdings immer folgende Fehlermeldung:
    (.text+0x33c): undefined reference to `piThreadCreate'
    collect2: ld returned 1 exit status

    Ich habs auch mit den POSIX Threads versucht, es kommt die gleiche Fehlermeldung...
    #include <wiringPi.h>, #include <pthread.h> ist auch vorhanden...

    Kann mir hier wer weiterhelfen?

    Gruß,
    Wostl

  • Servus dreamshader,

    danke für deine tollen Tipps ;)

    Scheint funktioniert zu haben.
    Kannst du mir vielleicht noch genauer erklären, was ich mit diesem Befehl genau tue? Bin leider noch ein Neuling in Sachen Linux, würds aber gerne ein wenig verstehen :D

    greetz,
    Wostl


  • Servus dreamshader,

    danke für deine tollen Tipps ;)

    Scheint funktioniert zu haben.
    Kannst du mir vielleicht noch genauer erklären, was ich mit diesem Befehl genau tue? Bin leider noch ein Neuling in Sachen Linux, würds aber gerne ein wenig verstehen :D

    greetz,
    Wostl

    Jo mei .... wie sag' ichs meinem Kinde ;) ...

    gcc ist der GNU C-Compiler, der den Quellcode in Maschinencode umsetzt, den der Prozessor dann versteht und ausführen kann.
    -o xxx ist der Name, den das ausführbare Programm erhält
    xxx.c ist mindestens eine C-Quelldatei die in Maschinencode übersetzt werden soll. Das können auch mehrere sein.
    -L sagt dem Linker, in welchem/welchen Verzeichnissen er, ausser denen in seinen Standard-Einstellungen, nach Bibliotheken suchen soll
    -l gibt an, welche Bibliotheken der Linker mit einbinden soll.

    Das rt ist eine Systembibliothek für u.a. High-Resolution-Timer.
    Naja, und wiringPi ist eben die wiringPi Bibliothek.

    Linker ist quasi der letzte Schritt, der den erzeugten Maschinencode und die benötigten Bibliotheken zusammenbindet.

    Du wirst, zumindest wenn Du in C oder C++ programmierst, mit Optionen für Compiler und Linker immer wieder konfrontiert.
    Wäre nicht schlecht, wenn Du Dir da ein paar Basisinformationen zusammensuchen würdest.
    Ich weiß die meisten Bibliotheken auch nicht auswendig, wichtig wäre daher, zu wissen wo man nachschauen kann.
    cu,
    -ds-

  • Danke dir,

    mir ist es eigentlich nur um die Zusammensetzung des Compiler Befehls gegangen bzw. um die Linux-Bedienung.
    Was ein Compiler/Linker ist und was sie machen, weiß ich natürlich schon.
    Bins halt von der Windows Programmierung her noch gewohnt, dass ich zum Bleistift im Visual Studio nur auf "Build" drücken muss und schon, Fehler ausgenommen, is das Programm als .exe im Projekt-Ordner. Bei Linux ist das doch ein wenig anders ;)

    Aber über so eine ausführliche Beschreibung beschwere ich mich natürlich nicht.

  • Ach so ... ok, ... dann ...

    Du kannst aber mal eine IDE z.B. Eclipse oder Geany ausprobieren.
    Kann sein, dass sich dadurch die Compiler-Aufrufe vereinfachen.
    Kann ich aber leider nix dazu sagen ... ich bin kein Fan von GUIs ... ist halt in den letzten xx Jahren zur Gewohnheit geworden. Vor allem, weil ich viel auf den unterschiedlichsten Systemen unterwegs war und die Kommandoebene meist sehr ähnlich war. Deshalb liebe ich auch vi heiß und innig.

    cu,
    -ds-

  • GUI ist eigentlich auch schlecht, da ich mich nur per SSH auf den Raspberry verbinden kann, da ich keinen Monitor/Tastatur etc. zur Verfügung habe. Mit Hilfe des x11-Forwardings wird die ganze Gaudi dann ein wenig langsam...
    Einzige Möglichkeit wäre natürlich, dass ich mit einer IDE, die unter Windows läuft, ein Linux Programm erstellen kann. Muss ich mal http://www.gidf.de bemühen ;)

    Da ich erst seit ein paar Monaten mit Linux zu tun habe, fällt mir natürlich der Umstieg von grafischer Oberfläche zur Terminal-Oberfläche von Linux nicht ganz leicht.
    Die Bedienung der Maus macht nämlich schon auch ein wenig Spass und Sinn :P

    Aber schön langsam wirds ein wenig Offtopic ^^

    Einmal editiert, zuletzt von Wostl (25. Juni 2013 um 21:10)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!