fr33g Geschrieben 23. Januar 2010 Geschrieben 23. Januar 2010 Hey Leute, man kann sein Programm ja statisch oder dynamisch Linken. Ich arbeite mit Code Blocks und den gnu compiler. wie sehe ich jetzt ob ich dynamisch oder statisch linke und wie kann ich das ändern? vor allem was ist besser was würdet ihr empfehlen? was hat welche vor und nachteile? wär cool wenn ihr mir das erklären könntet Zitieren
Klotzkopp Geschrieben 23. Januar 2010 Geschrieben 23. Januar 2010 Ganz einfach gesagt: Statisches Linken passiert zur Compilezeit, dynamisches Linken zur Laufzeit. wie sehe ich jetzt ob ich dynamisch oder statisch linke und wie kann ich das ändern?Was linkst du denn? vor allem was ist besser was würdet ihr empfehlen? was hat welche vor und nachteile?Kommt drauf an. Das hast du schon gelesen? Zitieren
fr33g Geschrieben 23. Januar 2010 Autor Geschrieben 23. Januar 2010 Ja habe ich;-) Ja ich schreib zum beispiel ein programm, wo ich selber klassen erzeug und die in header files packe. oder ich benutze halt header files von der c++ standarf libary, und wie kann ich dann wählen wie ich linke? Zitieren
fr33g Geschrieben 6. Februar 2010 Autor Geschrieben 6. Februar 2010 ich hätte zu diesem thema nochmal eine frage, hab ja soweit alles mittlerweile verstanden, aber wenn ich ja zum beispiel iostream inklude, wird ja die c++ standard bibliothek benötigt, sprich sie wird dynamisch gelinkt. wo sehe ich denn die anweisung dass sie gelinkt wird? oder ist das einfach bei jedem linker standardmäßig eingestellt dass sie automatisch dynamisch gelinkt wird? Zitieren
Klotzkopp Geschrieben 6. Februar 2010 Geschrieben 6. Februar 2010 aber wenn ich ja zum beispiel iostream inklude, wird ja die c++ standard bibliothek benötigt, sprich sie wird dynamisch gelinkt.Muss nicht dynamisch sein. wo sehe ich denn die anweisung dass sie gelinkt wird?In den Linkereinstellungen deiner Entwicklungsumgebung. Die wirft ja für dich den Linker an. oder ist das einfach bei jedem linker standardmäßig eingestellt dass sie automatisch dynamisch gelinkt wird?Ich kenne nicht jeden Linker. Aber manche Entwicklungsumgebungen linken solche Bibliotheken automatisch. Zitieren
fr33g Geschrieben 8. Februar 2010 Autor Geschrieben 8. Februar 2010 ok, aber da ich ja nichts einstellen musste und die .exe nicht wirklich sehr groß sind geh ich mal von aus sie werden dynamisch gelinkt. in den linker einstellungen kann ich ja nur einstellen wenn er was statisch linken soll. also bei code blocks mit gnu gcc compiler( weiß nicht ob der linker n extra namen hat) und ist es bei jedem linker gleich die anweisung dynamisch zu linken oder verschieden? dass muss ich doch in den quellcode schreiben oder? Zitieren
Klotzkopp Geschrieben 8. Februar 2010 Geschrieben 8. Februar 2010 in den linker einstellungen kann ich ja nur einstellen wenn er was statisch linken soll.Kann ich mir zwar nicht vorstellen, aber wenn du meinst. also bei code blocks mit gnu gcc compiler( weiß nicht ob der linker n extra namen hat)Der dazugehörige Linker heißt ld. Der Compiler kann aber den Linker aufrufen und bestimmte Kommandozeilenparameter an ihn weitergeben. und ist es bei jedem linker gleich die anweisung dynamisch zu linken oder verschieden?Verschieden. dass muss ich doch in den quellcode schreiben oder?Im Code steht das nur, wenn du die Programmierschnittstelle des dynamischen Linkers benutzt (dlopen/dlsym bzw. LoadLibrary/GetProcAddress). Sozusagen dynamisches Linken von Hand. Das macht man aber üblicherweise nur dann, wenn man zur Laufzeit prüfen will, ob eine bestimmte Funktion einer bestimmten dynamischen Bibliothek vorhanden ist, beispielsweise dann, wenn das Programm auch ohne diese Funktion klarkommt. Es gibt Compiler, bei denen du Direktiven für statisches Linken in den Code schreiben kannst, aber es gibt dafür keine standardisierte Möglichkeit. Zitieren
fr33g Geschrieben 10. Februar 2010 Autor Geschrieben 10. Februar 2010 Ok, also kann auf jeden fall in den linker einstellungen wählen welche static link libaries er statisch linken soll. wie ich ihm einfach so sagen kann dass er dynamisch machen soll weiß ich leider nicht, außer halt wie du sagtest, über die schnittstelle. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.