C Programm läuft nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • [font="Times New Roman"]Hallo,[/font]

    [font="Times New Roman"]um es vorweg zu nehmen, ich bin noch ein ziemlicher Neuling. Immerhin ist es mir gelungen,[/font]

    [font="Times New Roman"]Raspian und Raspbmc erfolgreich zu installieren. Nun experimentiere ich gerade mit den[/font]

    [font="Times New Roman"]GPIO’s des RasPi. Hierzu habe ich mir den Quellcode eines C Programms aus dem Internet heruntergeladen und in Geany übertragen. [/font]

    [font="Times New Roman"]Schritt 1 (Quellcode zu Objektcode kompilieren) endet mit der Meldung“Kompilierung erfolgreich beendet“[/font]

    [font="Times New Roman"]Schritt 2 (Objektdatei in ausführbare Datei umwandeln) endet mit diversen Fehlermeldungen (siehe Anlage).[/font]

    [font="Times New Roman"]Was mache ich falsch????????????[/font]

    [font="Times New Roman"]Vielen Dank für Eure Antworten[/font]

  • Hi rodial,

    also das, was Du da an Info rüberwachsen lässt, ist m.E. schon zu dünn für Spekulationen, geschweige denn für eine konkretere Aussage ...

    Ich für meinen Teil vermute, dass dieses Programm unsauber programmiert ist und Dir den Speicher vollmüllt.
    Bei einem PC mit 4 oder 6 GB RAM fällt das nicht weiter auf, aber auf dem RPi sind halt die Resourcen knapp ;)

    Was ist das für ein Programm?
    Was tut es?
    Ist es getestet und fehlerfrei?
    Wie genau übersetzt Du es?
    Auf welchem System übersetzt Du?
    Mit welcher IDE in welcher Version?
    Auf welchem System lässt Du es laufen?
    Welche Zusatzbibliotheken werden verwendet?
    Welche Version der Zusatzbibliotheken sind erforderlich?
    Welche Version dieser Bibliotheken hast Du auf Deinem System?
    Steht irgendwo ein Hinweis, dass das Programm als "root" ausgeführt werden muss?
    Wenn ja, wir rufts Du es auf?
    ...

    Also, zumindest ich benötige da noch einiges an Input, bevor ich dazu was sagen kann.

    Ansonsten sind screenshots in diesem Zusammenhang eher suboptimal.
    Ich für meinen Teil hätte da lieber ein Logfile.

    Na dann mal los,
    spuck' in die Hände und dann sehen wir mal ;)
    -ds-

  • Was ist das für ein Programm?
    Was tut es?
    Das C Programm steuert über zwei GPIO's eine LED mit Pulsweitenmodulierung (also langsam an, langsam aus)
    Ist es getestet und fehlerfrei?
    Davon gehe ich aus, Ich habe es von der Homepage eines Buchautors
    Wie genau übersetzt Du es?
    Auf welchem System übersetzt Du?
    Ich habe Raspian auf dem Pi installiert und die "Geany" Entwicklungsumgebung, und dort die von mir beschriebenen Schritte durchgeführt.
    Mit welcher IDE in welcher Version?
    Was meinst Du mit IDE (Sorry, ich bin Neuling)
    Auf welchem System lässt Du es laufen?
    Raspi B mit Raspian
    Welche Zusatzbibliotheken werden verwendet?
    Ich nehme an, damit sind die nach "include" genannten Bibliotheken gemeint?
    Welche Version der Zusatzbibliotheken sind erforderlich?
    Keine Ahnung, davon steht im Buch nichts
    Welche Version dieser Bibliotheken hast Du auf Deinem System?
    Keine Ahnung, wie kann ich das ermitteln?
    Steht irgendwo ein Hinweis, dass das Programm als "root" ausgeführt werden muss
    Nein
    Wenn ja, wir rufts Du es auf?

  • Versuch mal im Terminal:

    Code
    ls -la /usr/local/lib | grep -i libwiringpi


    und

    Code
    gcc -s -o pwm001 pwm001.c -lwiringPi
    Code
    ldd ./pwm001
    Code
    file ./pwm001


    EDIT:

    Evtl. müssen auch Pfade (header-Dateien, libraries) angegeben werden, für build-, link- und run-time. Z. B.:

    Code
    gcc -s -o pwm001 -I/usr/local/include pwm001.c -L/usr/local/lib -lwiringPi -Wl,-rpath,/usr/local/lib
    Code
    readelf -d ./pwm001 | grep RPATH

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    Einmal editiert, zuletzt von rpi444 (12. Januar 2014 um 00:04)

  • Das sind ganz klar Linkerfehler.

    Der Linker findet die Library nicht, weil er keine Ahnung hat
    was er suchen muss.

    Ich kenne wiringpi nicht, aber normalerweise gibt man Libraries
    mit -lxxx an. xxx ist dabei der Name der Library.

    rpi444 schlaegt -lwiringPi vor, das toent schon recht vernuenftig,
    aber der Grossbuchstabe im Library-Namen ist ungewohnlich.

    Sein Vorschlag mit der Kommandozeile ist auf jeden Fall gut.

    Wenn's klappt, kann man sicher irgendwo im Programm die
    benutzten Liraries angeben, oder zumindest irgendwo Parameter
    fuer die Befehlszeile einstellen.

  • kann nix dazu sagen ausser das es bei mir für LED an und aus sofort geklappt hat, bin nach dieser Anleitung vorgegangen.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • dreamshader
    Im Screenshot ist ganz klar das Problem zu erkennen, das haben auch schon einige geschrieben: Linkerfehler.
    Mit dieser Information hättest du auch sinnvolle Fragen stellen können. Es ist erkennbar das es sich um einen Anfänger handelt, da kann ma nmal darüber hinwegsehen, dass er nicht genau weiß was er mitteilen muss.
    Aber was bitte hilft dir die Information was das Programm tuen soll bei einem Linkerfehler?
    Und ok die Frage nach der IDE könnte bei einem Anfänger durchaus helfen, dann kann man ihm genau sagen WIE er es tut, aber zur Lösung des Problems ist die IDE VÖLLIG überflüssig.
    Programm mit "root" ausführen bei einem Linkerfehler?
    Bitte überlege ob du hier tatsächlich helfen kannst anstatt Anfängern Vorhaltungen zu machen.

    So, es heißt ja immer nicht nur meckern sondern es selbst besser tun:

    Dein Problem ist, dass die Bibliother "wiringPi" in der Datei wiringpi.h (keine Lust den Screenshot ein drittes mal zu öffnen, Schreibfehler in den Namen wirst du sicher überlesen können...) fehlt oder in der falschen Version vorliegt.
    Der Linker (ld heißt das Linkerprogramm (und muss ganz sicher nicht mit root ausgeführt werden)) meldet, dass er Referenzen zu Funktionen nicht finden kann, diese Funktionen liegen (zumindest den Namen nach stark zu vermuten) in besagter Bibliothek.

    In dem Kommentar bei der include-Direktive (so nennt man Präprozessor-anweisungen (nicht wichtig das genau zu verstehen zu diesem zeitpunkt)) steht auch drinn, dass das eine Bibliothek ist die man extra braucht.
    Wenn du uns verrätst wo du den Code her hast, können wir dir vermutlich sagen, welchen Teil du vergessen oder falsch gemacht hast damit das funktioniert.
    Tell hat schon viel sehr richtiges gesagt, aber da du nicht selber linkst sondern in deiner IDE (Entwicklungsumgebung, also das Programm in dem du Programmierst) bloß ein Knöpfchen drückst hilft dir das vermutlich nicht viel.
    Wenn du es schaffst Tells Hinweisen zu folgen, dann ist es gut, aber die Variante "Knöpfchen drücken" ist für den Anfang auch völlig ok, bloß müssten wir dazu wissen wonach du vorgegangen bist.

    Auf Dauer kann ich dir nur raten ein bisschen mit den Grundsätzen zu arbeiten, also Programmieren in einfachem Texteditor und kompilieren/Linken/ausführen auf Komandozeile, es hilft eine MENGE wenn man weiß was die IDE im Hintergrund versucht hat wenn man solche Probleme bekommt.

    Einmal editiert, zuletzt von Horroreyes (12. Januar 2014 um 13:42)

  • sorry, aber ich kann das nicht lesen ...
    Der screenshot ist auf meinem Bildschirm so winzig, dass ich eine Lupe oder keine Ahnung was brauche.

    Deshalb der Hinweis mit Logfile ... also langsam solltest Du mich kennen und wissen, dass ich auf ernst gemeinte Fragen auch gerne - manchmal vielleicht sogar zu ausführlich - eingehe ...
    cheers,
    -ds-

  • Ich kann es gut lesen, dass muss an deiner Konfiguration liegen. Das Bild ist bei mir ziemlich groß.
    Ideal sind Screenshots tatsächlich selten, aber offensichtlich ist rodial nicht klar, welche Infos man braucht um solch ein Problem zu lösen. Da find ich es tatsächlich ziemlich gut einfach alles zu sehen.
    prinzipiell wäre hier die Ausgabe des Linkers die Info gewesen die theoretisch ausreicht, der Code dazu hilft beim helfen *g* Aber nicht immer will/darf man den Quellcode dazu offenlegen
    Du hats ja Recht, meistens gibst du sehr gute und ausführliche Antworten, aber hin und wieder bist du extrem kritisch mit Anfängern, und ich kann mich noch gut in deren Situation reinversetzen... (Leider bemerke ich bei mir auch immer mehr, wie ich die Geduld mit blutigen Anfängern verliere... IT-Support kann ganz schön anstrengens sein. Das ist nicht auf das Forum bezogen sondern auf eine andere, ehrenamtliche Tätigkeit.)

  • Hi,

    nun ja ... irgendwie kommt es auch darauf an, ob ich das Gefühl habe, der TE hat ehrliches Interesse die Materie besser zu verstehen oder aber er sucht ledigich ein paar Deppen, die ihm sein Problem formulieren, die Infos dazu recherchieren und möglichst noch eine komplette Lösung erarbeiten :fies:
    Ist halt so eine "Gefühlssache" ... ich hoffe, dass ich bisher nicht zu oft daneben gelegen bin. Es ist so einigermassen überprüfbar, denn wenn sich jemand beim ersten kritischen Wort gleich verpisst und nie mehr gesehen ward, dann hat's gepasst ;) ...
    Wirklich interessierte Benutzer vertragen übrigend notfalls auch mal einen Knuff ... und wenn es ein Schwinger war, habe ich kein Problem damit ein wenig "heile heile" zu pusten und mich zu entschuldigen :daumendreh2:

    So long,
    -ds-

  • Hallo. Hatte anfangs auch große Probleme mit Geany. Es bedarf leider noch einiges es mit wiringPi ans laufen zu bekommen. Um Geany zu konfigurieren hat mir der User Andreas sehr mit einer Anleitung geholfen, zu finden hier

    Sebastian
    6. Januar 2014 um 14:29

    Lieben Gruß
    Sebastian

  • [font="Times New Roman"]Woww!!! Was habe ich da denn angerichtet.[/font]

    [font="Times New Roman"]Aber zuerst einmal vielen Dank für die vielen Antworten und Lösungsansätze.[/font]

    [font="Times New Roman"]Nein, ich suche keine Deppen, die mir mein Problem formulieren, die Infos dazu recherchieren und möglichst noch eine komplette Lösung erarbeiten. Ich bin einfach nicht mehr weitergekommen, mit meinen Anfängerkenntnissen und deshalb habe ich recherchiert und in diesem Forum eine Frage gestellt.[/font]
    [font="Times New Roman"]Ich habe mich auch nicht verpisst, sondern (so gut wie ich konnte) auf die mir gestellten Fragen geantwortet. [/font]


    [font="Times New Roman"]So, und nun werde ich mal versuchen die ganzen Anregungen umzusetzen. Danach kann es gut sein, dass ich mich wieder mit meinen „laienhaften“ Fragen melde. Nochmals vielen Dank.[/font]

    Einmal editiert, zuletzt von rodial (12. Januar 2014 um 21:00)

  • Das war von mir (und ich bin sicher auch von DS) nicht auf dich bezogen sondern auf das durchschnittliche neue Mitglied, viel zu viele wollen selbst nicht nachdenken, googlen garnicht vorher, fragen einfach und hoffen, dass man für sie alles löst.
    Auch laienhafte fragen sind kein Problem, solange sie nicht (zwischen den Zeilen) lauten "Macht mal für mich" und selbst auch Mühe hineingesteckt wurde/wird.

  • Hey rodial,

    das war jetzt nicht auf Dich gemünzt, da hast Du leider was falsch verstanden ...

    Das bezog sich auf die - vielleicht manchmal angebrachte Kritik von Horroreyes, ich würde die TEs hier zu harsch angehen :fies:

    Es gibt halt solche und solche Benutzer - die stecken teilweise eine Mordsarbeit hier rein, um z.B. ihren Horizont zu erweitern.
    Andere (gottseidank rückläufig) meinen, dass sie mit dem Kauf ihres RPi automatisch auch persönlichen Support hier im Forum mitgekauft haben.
    Wieder andere stellen mit Absicht dumm an, damit ihnen die "Berater" hier möglichst viel Arbeit abnehmen oder gar eine fertige Lösung präsentieren.
    Ich versuch halt gleich von Anfang an, mehr oder weniger erfolgreich, hier zu differenzieren.
    Also, wie gesagt - das waren nur ein paar erklärende Worte zum Beitrag von Horroreyes.

    Hat absolut nix mit Dir zu tun, und falls das doch so angekommen sein sollte (was ich mir nicht so recht vorstellen kann), dann sorry noch mal ... das war keinesfalls meine Absicht.

    ciao,
    -ds-

  • Hallo rpi444,
    vielen Dank.
    Mit cc -o pwm001 pwm001.c -lwiringPi
    und danach ./pwm001
    funktioniert das ganze tatsächlich.
    Nun muss ich nur noch herausfinden, wie ich das ganze aus der IDE "Geany" starten kann.
    Aber, ich bin ein gutes Stück weitergekommen.
    Nochmals vielen Dank und schöne Grüße
    rodial

  • Ich verweise nochmal auf diese Anleitung von Andreas für die Grundeinrichtung von Geany. Habe es Schritt für Schritt befolgt und es hat geklappt

    Sebastian
    6. Januar 2014 um 14:29

    zum schluss unter "Erstellen" -> " Kommandos zum Erstellen konfigurieren" öffnen, und in der 2. Zeile in der Zelle unter "Kommando" und hinter "Erstellen"
    gcc -Wall -o "%e" "%f" -L/usr/local/lib -lwiringPi
    eintragen um wiringPi einzubinden beim erstellen

    Einmal editiert, zuletzt von Sebastian (13. Januar 2014 um 16:18)


  • Ich verweise nochmal auf diese Anleitung von Andreas für die Grundeinrichtung von Geany. Habe es Schritt für Schritt befolgt und es hat geklappt

    Tastaturlayout/Auswahl Betriebssystem

    zum schluss unter "Erstellen" -> " Kommandos zum Erstellen konfigurieren" öffnen, und in der 2. Zeile in der Zelle unter "Kommando" und hinter "Erstellen"
    gcc -Wall -o "%e" "%f" -L/usr/local/lib -lwiringPi
    eintragen um wiringPi einzubinden beim erstellen

    Tolllllll, genau so funktioniert es.

    Vielen vielen Dank

    icon_danke_ATDE.gif
    rodial

Jetzt mitmachen!

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