So erzwingen Sie die Verwendung der statischen Bibliothek auf shared?
In meinem SConscript ich habe die folgende Zeile:
Program("xtest", Split("main.cpp"), LIBS="mylib fltk Xft Xinerama Xext X11 m")
Wie bekomme ich scons verwenden mylib.anstelle von mylib.so, während die Verknüpfung dynamisch mit den anderen Bibliotheken?
EDIT: auf der Suche zu verwenden, da einige Plattform-spezifische hacks wie möglich.
- Nicht scons.org/wiki/StaticallyLink helfen Sie hier?
- Die Lösung ist sehr spezifisch für nur gcc-runtime-libs. Es nutzt auch hacks wie die Angabe "libNAME.a", die ist Linux-spezifisch (kompilieren müssen auf MinGW auch...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorbei an den vollständigen Dateipfad, eingewickelt in ein Datei-Knoten wird Kraft einer statischen Verknüpfung. Zum Beispiel:
Produzieren die folgenden linker-Befehlszeile
Beachten Sie, wie die "-l" - flag nicht übergeben, um den linker für diese LIBS-Eintrag. Dies zwingt effektiv die statische Verbindung. Die alternative ist, ändern Sie LINKFLAGS zu bekommen, was Sie wollen, mit dem VORBEHALT, dass Sie unter Umgehung der Bibliothek dependency scanner -- der status der Bibliothek werden nicht geprüft für Umbauten.
Machen dieses unabhängig von der Plattform, die Sie Anhängen der env['SHLIBSUFFIX'] auf die Bibliothek, die Sie verwenden möchten. env['SHLIBSUFFIX'] gibt Ihnen diese Umgebungen suffix für gemeinsam genutzte Bibliotheken.
Haben Sie auch die ['SHLIBPREFIX'], ['LIBPREFIX'], ['LIBSUFFIX'] und ['PROGSUFFIX'], die alle nützlich für Situationen wie diese.
Edit:
Habe ich natürlich nicht gemacht haben mich verstanden, also werde ich klären.
Der Rückgabewert dieser Lookup-strings, um die pre/Suffixe, die Plattform verwendet. Auf diese Weise können Sie beziehen sich auf die Datei, die Sie brauchen, auf jeder Plattform. Beachten Sie, dass Sie können nicht verwenden es als Reine string, muss er eingebettet werden, wie ein Datei-Knoten als BennyG schlägt. Arbeiten mit Knoten sind sowieso die beste Lösung als Datei-Knoten sind viel vielseitiger als ein string.
Hoffe, das hilft.