Kompilieren von c++ code wirft unmengen an Fehlern

Ein neuer Artikel wurde veröffentlicht
  • Guten Morgen,


    Ich habe von einem ehemaligen Arbeitskollegen c++ Code bekommen, welcher vorher wohl auch schon ohne Probleme auf dem Pi lief. Nun musste ich die SD Karte des Pis aufgrund eines Defektes eben dieser tauschen wodurch das kompilierte Programm verschwunden ist. Versuche ich nun der c++ Quellcode auf dem Pi mit


    Code
    1. g++ dateiname.cpp

    Dabei bekomme ich jedoch hunderte, wenn nicht tausende Fehler. Nahezu alle sind von der Form:


    Code
    1. /usr/include/stdlib.h:10:1: error stray \<irgendeine Nummer> in program

    Wobei irgendeine Nummer wohl eine Zeilenzahl ist. Das nehme ich zumindest mal an. Das merkwürdige ist, das sich diese Fehler für die Zeilenzahlen immer und immer wiederholen. Was ich mit google rausgefunden habe ist, dass es sich wohl um für den Compiler unbekannte Zeichen im Quellcode handelt. Öffne ich die Datei mit vi auf dem Pi kann ich am Ende jeder Zeile auch ein ^M finden. Entferne ich dieses in vi mittels %s/^M//g, bekomme ich beim kompilieren jedoch immer noch die gleichen Fehler.


    Auf meinem Desktop PC uner Ubuntu 16.04 funktioniert das kompilieren ohne Probleme.

    Hat irgendjemand eine Idee woran es auf dem Pi liegen könnte? Fehlen irgendwelche Module/Bibliotheken?

  • ein ^M lässt ja darauf schliessen das die Datei in einem Linuxinkompatiblen Format gespeichert wurde, das Konsolenprogramm dos2linux wandelt es für dich um

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Zu eurer Sicherheit sind ab sofort alle meine Posts doppelt ROT13 verschlüsselt.

  • Hallo eijn ^M sollte fast kein Problem sein.

    Liegt denn die stdlib.h auch an der Stelle?

    Ansonsten schaue Dir die Datei mit den ^M mal mit verschiedenen Betrachtern an (more, pg, cat) ich hatte mal Code von einer WEB-Seite kopiert, alles hat gut ausgesehen und es lief nicht. Erst nach langen hin und her ist mir aufgefallen dass bei den Tabs am Anfang ein ungültiges Zeichen aus der WEB Oberfläche stand. Nach dem entfernen war alles wieder gut.


    Gruß

    Oli

  • Danke für die Tips!

    Aber es lag nicht am Code, sondern irgendwo im Raspbian hat sich ein Fehler eingeschlichen. Da ich auf der SD bis auf das OS nichts weiter hatte, habe ich stretch schnell neu aufgesetzt und siehe da, mit dem gleichen problematischen Code ging es auf Anhieb. Auch ohne das dos2unix eingesetzt werden musste.