GCC vs. GTK+

Windowsspezifische Probleme, WinAPI, conio.h
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GCC vs. GTK+

Beitrag von Xin » Sa Feb 07, 2009 11:10 pm

cloidnerux hat geschrieben:Mit statischen Lib's meint Xin nach meiner meinung Objektdatein die du beim Compilieren dann mit einbindest, dies macht aber das Programm größer und langsamer.
Zumindest größer.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » So Feb 08, 2009 10:34 am

Dann versuch ich es mal mit einem Setup, dass die dlls, den "Data"-Ordner und die exe in ein Verzeichnis entpackt und eine Verknüpfung anlegt.

Sowas müsste doch mit "inno-setup" gehen. Mal schauen ob ich das schaffe.

MfG Fuss

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: GCC vs. GTK+

Beitrag von cloidnerux » So Feb 08, 2009 12:28 pm

Xin hat geschrieben:
cloidnerux hat geschrieben:Mit statischen Lib's meint Xin nach meiner meinung Objektdatein die du beim Compilieren dann mit einbindest, dies macht aber das Programm größer und langsamer.
Zumindest größer.
Wenns größer ist muss windows mehr in den Speicher laden = mehr Arbeit = langsamerer start.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: GCC vs. GTK+

Beitrag von Kerli » So Feb 08, 2009 12:41 pm

cloidnerux hat geschrieben:Wenns größer ist muss windows mehr in den Speicher laden = mehr Arbeit = langsamerer start.
Und was glaubst du ist mit den dll's? Die müssen ja auch irgendwohin geladen werden...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: GCC vs. GTK+

Beitrag von cloidnerux » So Feb 08, 2009 1:32 pm

Die dll's werden Dynamisch geladen, sonst würden sie ja nicht Dynamic link library heißen, wenns sie nicht gebaraucht werden, müssen sie nicht geladen werden.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: GCC vs. GTK+

Beitrag von fat-lobyte » So Feb 08, 2009 1:39 pm

cloidnerux hat geschrieben:Die dll's werden Dynamisch geladen, sonst würden sie ja nicht Dynamic link library heißen, wenns sie nicht gebaraucht werden, müssen sie nicht geladen werden.
*lol*, wenn sie nicht gebraucht werden, dann musst du sie auch nicht hineinpacken :-D
Der Speicheraufwand für Statisch und Dynamisch gelinkte bibliotheken ist ungefähr gleich groß, im Endeffekt müssen alle Funktionen im Speicherbereich des Prozesses landen.
Wenn ein Programm die Funktion gar nicht benötigt, wird sie statisch zur ausführbaren Datei auch nicht dazugelinkt.
Es besteht eigentlich nur ein Unterschied, wann die Funktionen in den Speicher geladen werden:
Wenn sie statisch dazugelinkt werden, dann gleich am Start des Programms. Wenn sie dynamisch dazugelinkt werden, dann werden sie Später geladen.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GCC vs. GTK+

Beitrag von Xin » So Feb 08, 2009 1:50 pm

cloidnerux hat geschrieben:Die dll's werden Dynamisch geladen, sonst würden sie ja nicht Dynamic link library heißen, wenns sie nicht gebaraucht werden, müssen sie nicht geladen werden.
Die Argumentation hakt, da hat fat-lobyte schon recht.

Die Ausführungsgeschwindigkeit kann steigen, wenn aufgrund der Tatsache, dass sich alle Programme die gleiche DLL teilen, genug Speicher vorhanden ist, so dass der Computer nicht swappen muss.

Allerdings hast Du auch recht, dass das Programm schneller startet - aber nicht schneller abläuft, falls die DLLs bereits durch ein anderes Programm geladen sind.

Der Vorteil von DLLs wird allerdings aufgrund von Versionskonflikten kaputt gemacht, so dass Windows inzwischen DLLs versioniert, also jedes Programm bringt seine eigene XYZ.dll mit und die Programme teilen sich die DLL nur dann, wenn sie die identische Version verwenden. Verlangen Sie unterschiedliche Versionen, sind auch mehrere XYZ.dlls im Speicher.
MacOS geht noch krasser vor: ein Programm ist nichts anderes als ein Ordner, in dem alle benötigten Libs liegen, die dann verwendet werden. Hier wird aus Prinzip alles absolut alles ausgeliefert und installiert. Der Vorteil liegt allerdings dann darin, dass man ein Programm einfach in den Papierkorb schiebt und die Deinstallation ist sicher und vollständig vollzogen, ohne dass andere Programme in Mitleidenschaft gezogen werden.

Da inzwischen DLLs immer seltener geshared werden, weil Programm A mit gtk, Programm B mit wxWidgets, Programm C mit MFC und Programm D mit .NET und MicroSoft Office mit ganz anderen Widgets startet, darf man allerdings durchaus fragen, ob statisches binden heutzutage nicht sogar vorteilhafter ist.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GCC vs. GTK+

Beitrag von +Fuss+ » So Feb 08, 2009 1:59 pm

Und wie bindet man dlls statisch ein???

gibt es da sowas wie einen "Crashkurs"??? Über Irgendwelche Parameter an den Kompiler?

Ich quäl gerade google.

MfG Fuss

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GCC vs. GTK+

Beitrag von Xin » So Feb 08, 2009 2:07 pm

+Fuss+ hat geschrieben:Und wie bindet man dlls statisch ein???

gibt es da sowas wie einen "Crashkurs"??? Über Irgendwelche Parameter an den Kompiler?
Nachdem die Diskussion soweit durch ist: bei gtk... keine Ahnung. ^^

Du musst gtk selbst kompilieren, mit etwas Glück gibt es ein Makefile, dass Dir erlaubt zwischen DLLs udn statischen LIBs zu unterscheiden, so dass Du nach Belieben das eine oder andere kompilieren kannst.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: GCC vs. GTK+

Beitrag von cloidnerux » So Feb 08, 2009 2:09 pm

Dll's gar nicht, die werden nur Dynamisch dazugelinkt, oder was auch immer.
Statich hinzulinken heißt einfach alles in ne Objektdatei(en) packen und beim Compilieren dazulinken, fertig.
Je nach dem was alles drinn ist, hast du dann ne 2 MB *.exe und keine dll's mehr.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten