Statisch und dynamisch linken
-
Hallo!
Ich hoffe, ich bin hier mit einer Linker-Frage richtig aufgehoben: Ich compiliere
aus meinem Source Code eine dynamische Library mylib.so.Mein Source hängt aber wieder von anderen Libs, z.B. von libgmp ab. Gibt es
eine Möglichkeit, libgmp.a statisch in meine mylib.so hinein zu linken? Das
Ziel ist, daß der User sich alle anderen Libs nicht extra installieren muß.
Momentan linke ich dynamisch und verwende in der CMakeLists.txt die ZeileTARGET_LINK_LIBRARIES( mylib ${Boost_LIBRARIES} gmp )
Danke, mfg
-
Prinzipiell ja, allerdings müssen die .o-Dateien in der .a mit -fPIC kompiliert worden sein, damit du sie in einer .so benutzen kannst. Aller Wahrscheinlichkeit nach wirst du GMP dafür selbst bauen müssen.
Achte dabei auf Lizenzbeschränkungen. GMP beispielsweise steht unter LGPL, du darfst sie also nur statisch linken, wenn dein Code unter einer kompatiblen Lizenz steht. Dynamisches Linken dagegen erlaubt die LGPL auch proprietärem Code.
-
Ich würde das ganz einfach nicht machen. Abhängigkeiten zu erfüllen ist das kleine 1x1 für jeden der unter Linux Code selber compiliert. Und wenn du noch ein fertiges Paket für die Paketverwaltungen gängiger Distributionen anbietest, dann kann selbst ein DAU damit dein Programm installieren.