2009-04-08 4 views
3

Kann eine Anwendung von zwei verschiedenen Versionen von libstdC++ gleichzeitig abhängen? (z.B .: libstdC++ 5 und libstdC++ 6)? Das Szenario ist - einige binär hängt von libstdC++ 6 ab, lädt aber ein .so, das von libstdC++ abhängt 5 ...Kann eine Anwendung von zwei verschiedenen Versionen von libstdC++ abhängig sein?

Wird das eine Chance haben zu arbeiten?

+0

See [Multiple ABI Testing] (http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.testing.multi) im Handbuch und http: // stackoverflow.com/a/1682402/981959 –

Antwort

3

Am wichtigsten ist, dass Sie überprüfen müssen, ob diese beiden Versionen der Bibliothek binär kompatibel sind oder nicht. G ++ 3.3 und 3.4 sind zum Beispiel nicht.

Und selbst wenn sie sind: * Es können Probleme sein Name Mangeln * Sie keine Kreuzmodulzuordnung tun kann/Freigabe (eine schlechte Idee sowieso) * Sie können sich wahrscheinlich nicht um mit STL-Modulen arbeiten

1

Ich habe gerade eine C++ Applikation von AS3/GCC323 nach AS4/GCC346 portiert. Obwohl die App selbst mit libstdC++ verbunden war, so verbanden sich einige der Bibliotheken, mit denen sie verbunden war, immer noch mit libstdC++. Depsite Building erfolgreich es SEGV'ed, als ich versuchte, es auszuführen.

Nachdem ich auch die Bibliotheken auf AS4/GCC346 neu kompiliert habe, sind die App und die Bibliotheken nur mit libstdC++ .so.6 verbunden und die SEGVs sind nicht mehr aufgetreten.

Also ich würde sagen, die Antwort ist nein, Sie können nicht zu beiden verknüpfen.

Jon

Verwandte Themen