C/C++, vorkompilierte Dateien?



  • Also bei offiziellen Builds, die dann auch ausgeliefert werden, mache ich vorher auch ein clean ( also mein Buildscript macht das ), eben wegen der bereits beschriebenen möglichen Verwirrungen. Sicher ist sicher.

    Während der Entwicklung mache ich seltener clean, weil eben ein kompletter Rebuild zu lang dauert.

    Von welchen Build-Laufzeiten reden wir denn hier?

    Du klingst jetzt nicht unbedingt so, als hättest du selber Software-Entwicklungs-Hintergrund. Warum willst du deinem Entwickler reinreden?



  • Hallo zusammen

    Vielen Dank für die hoch kompetenten Feedbacks!!

    Mit freundlichen Grüssen,
    Jan


  • Mod

    @wob sagte in C/C++, vorkompilierte Dateien?:

    Schreibt ihr denn das Makefile selber oder nutzt ihr einen Generator wie cmake? Als ich noch das Makefile von Hand geschrieben habe, musste ich auch oft make clean laufen lassen, weil man einfach zu leicht vergessen kann, das Makefile mit anzupassen.

    Teils teils. Vergessen, das Makefile anzupassen ist genau der Grund, wieso man es nicht selber schreiben sollte. Andererseits bin ich mit Makefiles so viel besser als mit den Makefilegeneratoren, dass die Benutzung einer Autotoolchain ein für mich nicht unerheblicher Mehraufwand ist. Daher wäge ich halt ab, was ich für den insgesamt kleineren Aufwand halte: Makefile selber schreiben, bei Projektanderungen nachziehen, und abundzu frustrierende Fehler haben, weil ich dies vergessen habe; gegenüber dem Mehraufwand mit einer Autogenerierung, wo größere Änderungen auch nicht trivial sind (kleine aber schon), und wo ich tendenziell mehr Fehler mache.

    Das Wichtigste aber zum Schluss: Wenn ich auf Portabilität achten muss, es also nicht nur mein Privatspaß ist, führt an einer Autogenerierung wenig vorbei.



  • Ich kämpfe auch eher gegen CMake als dass ich mit CMake arbeite.

    Da ich mich aber auch mit Makefiles nicht sonderlich auskenne und CMake mir Out-of-Source-Builds bietet und auch z.B. automatisch mit CPack ein .deb bauen kann, beiße ich dann doch in den Apfel mit negativem pH-Wert und stümpere mir eine CMakeLists.txt zusammen 😱



  • Irgendwie bekomme ich keine Mails bei Antworten, dies obwohl "Beobachtet" ausgewählt wurde. Oder hat dies nix mit Mails zu tun...? Vielen Dank für die Feedbacks.

    Mit freundlichen Grüssen,
    Jan


  • Administrator

    @jmar83 sagte in C/C++, vorkompilierte Dateien?:

    Irgendwie bekomme ich keine Mails bei Antworten, dies obwohl "Beobachtet" ausgewählt wurde. Oder hat dies nix mit Mails zu tun...? Vielen Dank für die Feedbacks.

    Ob rechts auf dein Icon klicken, auf Einstellungen gehen und dort kannst du einstellen, bei welchen Benachrichtigungen du eine E-Mail bekommst. Standardmässig werden keine E-Mails verschickt.



  • Vielen Dank, das scheint wohl geklappt zu haben. (Bei der nächsten Antwort werde ich sehen, ob dann ein Mail reinkommt...)

    Zurück zum Thema:

    • Mit der originalen Geschwindigkeit des Raspiberry Pi 3B+ (=4x 1.4Ghz) ging das Kompilieren ca. 1 Std. und 10 Min.
    • Nachdem Übertakten auf 4x 1.55Ghz meldete der Compiler mittendrin einen "segfault"...
    • Nach dem Anpassen der Übertaktung von 4x 1.55GHz auf 4x 1.5Ghz war der "segfault" weg und es dauerte noch ca. 1 Stunde
    • Nach der Installation von "ccache" und bei der ersten Kompilation ging's weniger als 1 Stunde. (Schon bei der ersten Kompilation mit "ccache" gab's wohl irgendwelche "Überschneidungen" - es werden insgesamt 7 Sachen kompiliert, 3 Libraries (zuerst) und dann anschliessend noch 4 ausführbare Anwendungen)
    • Nach der 2. Kompilation mit "ccache" dauerte es noch ca. 5.5 Minuten!!!!! 🙂

    -> Die Tipps zum Übertakten habe ich von hier: https://miguelangelantolin.com/raspberry-pi-3-b-overclocking/ (-> Einfach "1550" mit "1500" ersetzen!!)

    -> "ccache" aufzusetzen war auch total easy... so wie es hier beschrieben wird, funktioniert's auch bei Raspbian Stretch (aktuelle Version): https://askubuntu.com/questions/470545/how-do-i-set-up-ccache

    "Du klingst jetzt nicht unbedingt so, als hättest du selber Software-Entwicklungs-Hintergrund. Warum willst du deinem Entwickler reinreden?"

    ...bin auch Entwickler, zumindest so halbwegs (nebenbei Projektleitung und auch noch zuständig für die interne IT, quasi "Junge für alles" halt..;-)), allerdings komme ich eher aus der Richtung Java, PHP & .NET (Der Server-Teil von Webapps halt, GUI-Sachen sind jedoch weniger "meins") wie auch SQL.

    Nebenbei kenne ich mich noch mit Shell-/Bashskripts unter Linux aus, und das aktuelle Thema ist ein Skript, welches von "git pull" übers Kompilieren (C/C++-Hintergrunddienste) zum Packen (.deb-Datei) hin bis zur Verteilung auf's APT-Repo alles macht. (das Paket "reprepro" kann ich dafür wärmstens empfehlen -> https://blog.packagecloud.io/eng/2017/03/23/create-debian-repository-reprepro/ )

    Deshalb war ich auch mit der Kompilierungszeit der C/C++-Sachen beschäftigt. Wir haben uns zuerst überlegt, meine Skripte konfigurierbar zu machen (also so dass nicht immer alle 7 "targets" kompiliert werden müssen, etwa über Parameter), nun scheint der ganze Prozess max. 20 Minuten zu dauern - also kein Problem, um immer alles zu kompilieren!! 🙂

    Mit freundlichen Grüssen,
    Jan


  • Mod

    Heißer Tipp: Compilier nicht auf einem Raspberry Pi, sondern für einen Raspberry Pi. Auf einem normalen Desktoprechner sollte das um ein Vielfaches schneller gehen. Crosscompiling (wie man das nennt) ist zwar nicht ganz einfach und wird bei den ersten Versuchen bestimmt oft schief gehen, aber für so eine beliebte Plattform wirst du bestimmt viele Anleitungen oder gar fertige Werkzeuge finden. Ich brauchte bei Google bloß 'cros' einzugeben und es wurde mir schon 'cross compiling raspberry pi' vorgeschlagen. Ich bin also wohl nicht der Erste mit dieser Suchanfrage 🙂



  • Vielen Dank für den Tipp. Daran habe ich auch schon gedacht, aber die ganze Konfiguration hat mich vom Thema abgehalten.

    Na ja, vielleicht ist es ja doch nicht soooooo schwierig, werde es wohl bei der nächsten Gelegenheit ausprobieren. (Aber aktuell hab ich der Belegschaft und dem Chef schon mitgeteilt, dass mein Projekt (im Grossen und Ganzen) fertig ist und es nun genutzt werden kann..)

    P.S.: Nun klappt's auch mit der Mail-Benachrichtigung wenn jemand im Forum hier antwortet - ebenfalls vielen Dank!



  • @jmar83 sagte in C/C++, vorkompilierte Dateien?:

    • Nachdem Übertakten auf 4x 1.55Ghz meldete der Compiler mittendrin einen "segfault"...
    • Nach dem Anpassen der Übertaktung von 4x 1.55GHz auf 4x 1.5Ghz war der "segfault" weg und es dauerte noch ca. 1 Stunde
    • Nach der 2. Kompilation mit "ccache" dauerte es noch ca. 5.5 Minuten!!!!! 🙂

    Ich würde die Übertaktung wieder rückgängig machen. Nicht jeder Fehler den die CPU bei zu hohem Takt macht muss in nem SIGSEGV enden. Wenns blöd hergeht erzeugt das Ding ein Programm das auch anscheinend das macht was es soll, aber dann irgendwo doch nicht richtig funktioniert. Nachdem der Gewinn durch Übertaktung sowieso so gering ist, ... wäre es mir das Risiko nicht wert.



  • "Ich würde die Übertaktung wieder rückgängig machen. Nicht jeder Fehler den die CPU bei zu hohem Takt macht muss in nem SIGSEGV enden."

    Bin bin es eigentlich gewöhnt, dass dabei der Rechner einfriert! 😉 (Das Problem mit diesem Fehler hängt aber 100% mit der Übertaktung zusammen, vorher ging's x mal ständig gut...)

    "Nachdem der Gewinn durch Übertaktung sowieso so gering ist, ... wäre es mir das Risiko nicht wert."

    Volle Zustimmung, jetzt mit dem "ccache" geht's ja ohnehin ab wie die Post! 🙂


Log in to reply