Kompilierung großer Projekte



  • Hallo zusammen,

    ich habe eine Frage zur Kompilierung großer Projekte. Unter einem großen Projekt verstehe ich zum Beispiel Android - also hunderttausende Dateien, die insgesamt viele Gigabytes belegen. Vor einiger Zeit habe ich Android 4.4.4 auf meinem Laptop vollständig kompiliert. Der Vorgang hat etwa fünf Stunden gebraucht.

    Angenommen man möchte nun ein solch großes Projekt modifizieren, zum Beispiel einige Quelldateien von Android anpassen. Wie kompiliere ich dann das Projekt? Es kann ja nicht sein, dass für jede kleine Änderung alles neu kompiliert werden muss und ich damit jedes Mal fünf Stunden warten muss.

    Weiß da jemand Bescheid?



  • In der Tat, da wissen Leute bescheid.

    Einfach nur das kompilieren was geändert wurde und neu linken. Makefiles helfen dabei.



  • die Source Files werden ja einzeln kompiliert.
    Je *.cpp bzw. .c Datei entsteht ein object file.
    Erst der Linker baut aus den object files das vollständige Programm (
    .exe, a.out) zusammen.

    Ändert man ein Source File, so wird nur dieses neu compiliert. Der Linker baut dann alles neu zusammen - wobei auch da gibts die Möglichkeit zur Beschleunigung mit incremental linking.

    Einfach mal ein bisschen nach den genannten Begriffen im www suchen dann sollte es klar sein wie es funktioniert.



  • Hi, danke für die Antworten. Mir ist klar, welche Rolle make-files etc. haben. Nur habe ich noch nie mit einem so gigantischem Projekt gearbeitet und habe kein Tutorial gefunden, dass diese Frage antwortet. Dass ich mir selbst make Scripte kann ich mir auch nicht vorstellen, weil Google ja Tools für alles bereitsstellt.

    Also wenn ihr wisst, wie es konkret mit Android geht oder wo man es nachlesen könnte, wäre ich über diese Info dankbar.

    Viele Grüße



  • compilermensch schrieb:

    Also wenn ihr wisst, wie es konkret mit Android geht oder wo man es nachlesen könnte, wäre ich über diese Info dankbar.

    Du findest sicher mehr, wenn du danach suchst, wie Linux kompiliert wird. So in etwa wird es auch mit Android gemacht.



  • Achte einfach darauch, dass du nicht auf "clean build" oder so ähnlich klickst und die objekt files nicht löschst.



  • wenn du damit c++ auch ansprichst....c++ hat da ein riessiges problem! wann wird das standard kommittee sich entschliessen die arbeit an c++ modules mal zu beschleunigen? das dauert immer unmengen zeit bis die sich mal zu einem konzept entscheiden...traurig aber wahr...



  • c++guru schrieb:

    wenn du damit c++ auch ansprichst....c++ hat da ein riessiges problem! wann wird das standard kommittee sich entschliessen die arbeit an c++ modules mal zu beschleunigen? das dauert immer unmengen zeit bis die sich mal zu einem konzept entscheiden...traurig aber wahr...

    Nicht mehr nötig. So ein i7 bläst die Files nur so durch.
    Wer sooo riesige Projekte hat, daß sie störend lange compilieren, obwohl er ein wenig sorgsam war und nicht Tricks wie #include "std_all.hpp" macht, sollte sich eigentlich auch ordentliche Hardware besorgen können. Und das Problemchen wird von alleine immer kleiner, wozu jetzt in blinden Aktionismus verfallen?



  • es ist auch von vorteil, wenn man weiß. welche änderungen binär kompatibel sind und wann man z.b. nur eine DLL bauen muss.


Log in to reply