Comment puis-je lier mon programme en c++ statique avec libstdc++ sur osx utiliser clang?
je suis de l'écriture du programme en c++ et je veux les distribuer sur les versions Mac OS X 10.6 et plus. Le problème est que quand je compile le programme avec clang et c'est lié dynamiquement avec libstdc++ et il provoque des problèmes avec les anciens systèmes.
Il est l'un des principaux -static-stdc++
dans gcc, mais il n'y a aucun bruit. Comment puis-je lier mon programme de manière statique avec clang?
Mon objectif principal est de compiler des binaires sur Mac OS X 10.9 et être capable de la faire fonctionner sur des versions antérieures. Il existe peut-être une manière différente?
Merci.
OriginalL'auteur milo | 2014-05-05
Vous devez vous connecter pour publier un commentaire.
Sous Linux, cette commande fonctionne:
Où
loopy
est bien sûr le nom de mon programme.Mise à jour:
Il semble que Apple déconseille fortement la liaison statique de sorte qu'il suggère une autre approche est nécessaire.
Cette réponse sur la création de rétro-compatible OS X logiciel peut être utiliser pour vous au lieu.
ld: library not found for -lcrt0.o
Vous aurez besoin des versions statiques de toutes les bibliothèques, y compris
libcrt0.a
. Voir cette réponse pour plus de détails sur ce point.Il devrait être possible de lier statiquement libc++ sans liaison statique de la libc. Le raisonnement pour décourager la liaison statique ne s'applique pas à la libc++; seulement libSystem.
OriginalL'auteur Edward