Ich schaue mir gerade man die manpage zum gcc und finde dort die optionen -static und -static-libgcc. Ich habe das auch schon mal bei anderen Applikationen (z.B. apache) gesehen. Was genau ist denn der unterschied ob ich ein Programm "static" und/oder "static-libgcc" kompiliere? Irgendwie verstehe ich das nicht so ganz.
Lg, Funny -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Wenn du statisch linkst, dann müssen die libs auf dem Zielsystem nicht vorhanden sein. Bei dynamisch eben doch. Dynamisch braucht weniger Speicher und außerdem wird immer die aktuelle Version auf dem System verwendet.
Okay, ich nehme mal an, dass sich das im Endeffekt auf alle libs bezieht die ich bei einem
Code:
ldd a.out
sehe.
Ist dort eigentlich auch eine Art "Versions-Kontrolle" dabei? Es kann ja sein das die Anwendung auf einem neuem System (Beispiel mein Test-System SuSE10.1) kompiliert wird und auf einem alten System (RedHat 7) ausgeführt werden soll. Dort werden die Libs ja dann in einer älteren Version vorliegen. Gibts dann einen Fehler "libxxx.so.x required"? -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Wichtig war mir nun erstmal nur zu wissen ob das System sich bemerkbar macht und sagt "hey, deine Version der libxxx ist zu alt" oder ob mein Programm feucht fröhlich startet und mit Funktionen arbeitet, die aufgrund von starken Versionsunterschieden anders arbeiten und sich dadurch ein "unsichtbarer Fehler" einschleicht. Wenn man das nämlich weiß, erleichtert sich IMO die Fehlersuche ;-) -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Meine Website: http://www.funnydingo.deDieser Post wurde am 21.08.2006 um 12:45 Uhr von FunnyDingo editiert.
hi, hatte nur mal bei der libXML das problem, ansonsten funktioniert das. (Wenn sich die programmierer nämlich nicht an die Versions-"Richtlinien" halten, dann kann schon mal passieren das dann beim start einfach nur "unresolved symbol xyz" kommt. -- class God : public ChuckNorris { };