2017-02-17 4 views
1

Ich habe vor kurzem eine Position für die Entwicklung von C++ - Server-Anwendung unter GNU/Linux und Unix einschließlich Solaris, HP-UX und so weiter bekommen. Da mein Unternehmen plant, alles von Grund auf neu zu schreiben, denke ich darüber nach, wie man es mit modernem C++ entwickeln kann.Ist es eine gute Praxis, libstdC++ static zu verknüpfen?

Leider scheint es aufgrund seiner geschlossenen Plattform nicht immer möglich zu sein, eine libstdC++ Runtime auf den Client-Rechnern zu finden. Ich weiß, dass libstdC++ abwärtskompatibel ist, aber ich finde es schlecht, dass ich GCC 3.4 oder 4.2 (im Falle von HP-UX) ansprechen muss, und ihr Compiler (Unix-Provider) ist sucks.

Glücklicherweise scheint es, als ob einige Leute behaupten, dass linking libstdc++ statically is fine in einem Sinn der rechtlichen Dinge, und someone empfiehlt es in Bezug auf die technische Art und Weise. Ich bin mir jedoch nicht sicher, ob dies (rechtlich und technisch) sicher ist.

Ist es eine Notwendigkeit, libstdC++ static zu verknüpfen? Dieses Produkt bietet eine ausführbare und freigegebene Bibliothek für Entwickler von Drittanbietern und es lädt keine freigegebene Bibliothek von Drittanbietern, die nicht in der Systembibliothek von Drittanbietern enthalten ist.

+0

Große Frage, ich habe mich immer über die rechtlichen Implikationen gefragt ... – Kupto

Antwort

1

Meine 50 Cent:

ich statisch ein großer Fan von Verbindungs ​​Sachen bin (vor allem auf Windows), aber der Preis ist, dass falls es Fehler/Sicherheitsproblem sind, müssen Sie erneut Schiff Ihr Produkt oder biete ein Update an. Ich zögere, das unter Linux/Unix zu tun, weil Sie im Allgemeinen keine Binärkompatibilität über alle Unix-Betriebssysteme haben. Wenn Sie für ein Zielsystem kompilieren, ist das egal (außer Sie müssen sich selbst um Updates kümmern).

Leistungsmäßig haben gemeinsame Bibliotheken diesen kleinen Overhead des Ladens der Bibliotheken, was heutzutage lächerlich vernachlässigbar ist.

Rechtlich, es geht Ihnen gut (Disclaimer, ich bin kein Anwalt, Sie können den Anwalt Ihres Unternehmens konsultieren). GNU hat eine exception auf ihre Laufzeitbibliotheken:

Der Quellcode unter der GNU General Public License vertrieben wird Version 3, mit dem Zusatz unter Abschnitt 7 einer Ausnahme beschrieben in der „GCC Runtime Library Ausnahme, Version 3.1” wie folgt (oder sehen die Datei COPYING.RUNTIME)

Wenn das nicht der Fall war, dann keine propietary Produkte immer verfügbar auf Linux hätte.

Wenn Sie Bedenken hinsichtlich der Lizenzierung haben, sollten Sie auch den Clang-Compiler in Betracht ziehen. Es hat eine very tolerant BSD license. Nun, da Sie Sachen von Grund auf neu schreiben.

Verwandte Themen