Est-ce une bonne pratique d’associer libstdc ++ static?

J’ai récemment obtenu un poste pour développer une application serveur C ++ fonctionnant sous GNU / Linux et Unix, y compris Solaris, HP-UX, etc. Étant donné que mon entreprise prévoit de réécrire tout à partir de zéro, je réfléchis à la manière de la développer en utilisant le C ++ moderne.

Malheureusement, à cause de sa nature de plate-forme fermée, il semble que ce n’est pas toujours possible d’obtenir une descente libstdc ++ runtime dans les machines du client. Je sais que libstdc ++ est compatible avec les versions antérieures, mais que je dois cibler GCC 3.4 ou 4.2 (dans le cas de HP-UX), et que le compilateur (fournisseur Unix) est nul .

Heureusement, il semble que certaines personnes affirment que lier statiquement libstdc ++ convient parfaitement en cas de problèmes juridiques et que quelqu’un le recommande de manière technique. Cependant, je ne suis pas sûr que ce soit sûr (sur le plan juridique et technique).

Est-il judicieux de lier libstdc ++ static? Ce produit offre une bibliothèque exécutable et partagée pour les développeurs tiers et ne charge aucune bibliothèque partagée tierce qui ne se trouve pas dans celle du système.

Mes 50 centimes:

Je suis un grand fan de la création de liens statiques (en particulier sous Windows), mais le prix est que si des problèmes de bogues / de sécurité surviennent, vous devez renvoyer votre produit ou proposer une mise à jour. Je suis réticent à le faire sous Linux / Unix, car vous n’avez généralement pas de compatibilité binary sur tous les systèmes d’exploitation Unix. Si vous comstackz pour un système cible, alors ce n’est pas grave (sauf, encore une fois, vous devez vous débrouiller vous-même avec les mises à jour).

Du sharepoint vue des performances, les bibliothèques partagées ont ce peu de temps pour charger les bibliothèques, ce qui est ridiculement négligeable de nos jours.

Légalement, vous allez bien (Disclaimer, je ne suis pas avocat, vous voudrez peut-être consulter l’avocat de votre entreprise). GNU a une exception sur leurs bibliothèques d’exécution:

Le code source est dissortingbué sous la licence GNU General Public version 3, avec l’ajout sous la section 7 d’une exception décrite dans la “GCC Runtime Library Exception, version 3.1” comme suit (ou consultez le fichier COPYING.RUNTIME).

Si ce n’était pas le cas, aucun produit propriétaire n’aurait jamais été disponible sous Linux.

Vous pouvez également envisager d’utiliser le compilateur Clang si vous êtes préoccupé par les licences. Il a une licence BSD très tolérante . Eh bien, puisque vous réécrivez des choses à partir de zéro.