Frage

Ich versuche, so zu kompilieren, dass der Exec statisch mit gcc verknüpft ist.Ich nahm an, dass das Ausführen von bjam link=static runtime-link=static den Trick machen sollte? Als ich das versuchte, bekam ich folgende Fehler wie:

...failed gcc.link TGT/bin/gcc-4.5.1/debug/link-static/runtime-link-static/datagen...
gcc.compile.c++ TGT/bin/gcc-4.5.1/release/link-static/runtime-link-static/base_data_gen.o
gcc.link TGT/bin/gcc-4.5.1/release/link-static/runtime-link-static/datagen
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status

Diese kommen nicht, wenn ich bjam link=static ausführe. Bitte beraten?

War es hilfreich?

Lösung

Ich glaube, dass libstdc ++ absichtlich nicht statisch verknüpft ist.Dies wird von vielen als gefährlich angesehen (obwohl ich keinen guten Grund gehört habe).Ich glaube nicht, dass es eine einfache Flagge gibt, die Sie hinzufügen können.Für das gcc-Toolset würden Sie so etwas wie hinzufügen

-static-libgcc  -Wl,-Bstatic -lstdc++

zu Ihren cxxflags für Ihre Build-Variante.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top