C++ ausführbare Datei

  • Hallo zusammen,


    bei Recherchen zu meinem Problem bin ich über diese Forum gestolpert und habe bereits einige Beiträge hier gefunden, die mir helfen konnten.
    Da ich allerdings ein ziemlicher Raspberry Pi Noob bin - ich habe bisher erst 1-2 kleine Programme mit Python geschrieben - hoffe ich, dass ihr mir helfen könnt.


    Mein Problem ist folgendes...
    Ich wurde von einem meiner Professoren zu einem Projekt hinzugezogen, welches bisher nur einen "proof of concept"-Status hat.
    Es geht um die Objektdetektion mittels Wärmebildaufnahmen, das benutzte Raspberry Pi ist ein 2er Model B V1.1.


    Die verwendeten Skripte sind mittels C++ geschrieben, weil mein Vorgänger dort einige gute OpenSource Algorithmen gefunden hat.
    Das eigentlich laufende Programm ist aber auf dem Raspberry Pi als "executable" angezeigt und besitzt im Ordner keine Endung.
    Die zwei Hauptdateien sind einmal "Main" als "executable und "main.cpp".


    Die Executable kann ich nicht verändern, also habe ich am C++ Skript einige Änderungen durchgeführt, merke diese aber beim Ausführen der Main-executable Datei nicht.


    Ich selbst habe Grundkenntnisse in C und C#, komme also einigermaßen mit den C++ Skripten zurecht.
    Auch habe ich das Forum hier schon nach ähnlichen Problemen durchsucht, so wie es sich gehört - ich hoffe nur ich war nicht zu blind und das Problem gibt es doch bereits einmal.


    Jetzt nach langer Rede meine eigentliche Frage:
    Wie muss ich die Executable ändern, dass ich die Änderungen auch tatsächlich merke? Oder wenn es besser wäre, wie erstelle ich aus dem C++ Skript eine neue Executable?
    Google habe ich ausgiebig genutzt, aber leider ebenfalls nicht viel gefunden, weil es häufig nur um Bash-Dateien oder .sh-Skripte geht.


    Vermutlich merkt man jetzt zum Schluss, dass ich wirklich kaum bis keine Ahnung habe.
    Aber ich hoffe, wie gesagt, ihr könnt mir helfen.
    Vielen Dank schonmal und mfG,
    Booma

  • Hallo Booma,


    herzlich Willkommen in unserem Forum!



    Sprich, wenn ich das C++ Skript neu kompiliere, sollten die Änderungen funktionieren?


    Nur, wenn es fehlerfrei compiliert wurde, fehlerfrei gelinkt werden konnte und auf dem Medium noch genug Platz ist, um das ausführbare Programm noch speichern zu können.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • Die zwei Hauptdateien sind einmal "Main" als "executable und "main.cpp".


    Die Executable kann ich nicht verändern, also habe ich am C++ Skript einige Änderungen durchgeführt, merke diese aber beim Ausführen der Main-executable Datei nicht.


    Die main.cpp ist die Source Datei, also wo der C++ Code drin steht und an der man programmiert.


    Erst wenn man diesen Sourcecode durch den Compiler jagt und in MaschinenCode umgewandelt wurde, entsteht daraus die "Main" Datei welche dann auch direkt ausführbar ist.




    Jetzt nach langer Rede meine eigentliche Frage:
    Wie muss ich die Executable ändern, dass ich die Änderungen auch tatsächlich merke?


    Gar nicht. An Binaries (executables) kannst du so nix ändern. Man kann nur den Sourcecode verändern und um dann eine neue Executable zu kriegen muss man den Sourcecode kompilieren.


    Ist in dem Verzeichnis sonst keine Datei?


    Wenn es noch eine "Makefile" Datei gäbe bräuchtest du evtl. nur "make" eingeben - ansonsten müsstest du es manuell kompilieren .... Allerdings würde ich einfach mal in die Shell Histroy gucken und hoffen das dort noch drin steht was dein Vorgänger zum kompilieren ausgeführt hat:


    Code
    histroy | less


    Mit der Leerzeichen Taste seitenweise weiter, mit q beenden.

  • Vielen Dank schonmal für die Antworten =)


    Was Speicherplatz angeht, sollte das kein Thema sein. Die Dateien sind nur ein paar kB groß und ich habe mehrere GB zur Verfügung stehen.


    Jetzt macht aber auch die Makefile-Datei, die ich vorhin entdeckt habe Sinn...

    Quote


    CFLAGS = `pkg-config --cflags opencv`
    LIBS = `pkg-config --libs opencv`


    Main: main.cpp
    g++ $(CFLAGS) $(LIBS) -o Main main.cpp ...und noch mehr Dateien


    Muss ich die dann über das Terminal ausführen? Weil es ja offensichtlich trotz der Existenz der Datei nicht automatisch geschieht

  • Ja, du musst schon "make" im Verzeichnis mit dem Makefile eingeben. Automagisch funktioniert da nix.

  • Jaaa. Das hat mir geholfen, habe es nach meiner überschneidenden Antwort so gemacht und es hat funktioniert.


    Vielen Dank für die Hilfe =)