Cc à gcc au lieu de clang sur OSX Yosemite
J'ai essayé d'obtenir Mac OSX Yosemite utiliser gcc au lieu de clang lors de la cc est invoqué, mais peu importe ce que je fais, il refuse de jouer le jeu. J'ai déjà essayé de changer mon bash_profile/bashrc et même le rétablissement du lien le lien, mais en vain, à chaque fois j'invoque "cc" il est encore clang qui s'exécute. Je suis en train de le forcer à être gcc au lieu (et non, juste appeler gcc n'est pas une option).
J'ai déjà posé une question similaire (Faire gcc par défaut du compilateur c sur Yosemite/désactiver clang).
Je suis toujours intéressé quand les gens disent qu'ils veulent utiliser gcc sur clang - avez-vous des raisons idéologiques ou de quelque autre objectif à l'esprit?
Non,j'ai juste besoin d'exécuter un très arcanes morceau de logiciel qui suppose de gcc, mais ne peut pas fonctionner avec clang.
Dans XCode 6, le
je suppose que vous devez tout d'abord assurez-vous que c'est de la vraie
Non,j'ai juste besoin d'exécuter un très arcanes morceau de logiciel qui suppose de gcc, mais ne peut pas fonctionner avec clang.
Dans XCode 6, le
gcc
est un lien vers clang
, pas la véritable gcc
. Vous devez obtenir une version personnalisée de GCC sous une forme ou sous, et puis changer les liens (et le risque de les avoir changé si vous mettez à niveau XCode et installer les outils de ligne de commande).je suppose que vous devez tout d'abord assurez-vous que c'est de la vraie
gcc
, pas un wrapper pour clang
; et assurez-vous que le réel gcc
est d'abord trouvé dans $PATH
, vous pouvez export CC=/path/to/real/gcc
si vous préférez. Notez que certains scripts d'installation peut spécifier CC pendant configure
, mais d'autres sont autorisés à changer en cours make
; lire l'accumulation de l'aide si il y a des.
OriginalL'auteur Hendrik | 2015-01-06
Vous devez vous connecter pour publier un commentaire.
Ni OS X, ni Xcode est GCC. Pour la compatibilité avec les scripts qui suppose le compilateur s'appelle "gcc", il a exécutables par ce nom, mais ils sont tous les fronts pour Clang. Aucun montant de créer des liens symboliques vers, des variables d'environnement, ou de configurer les alias permettra à ceux qui sont exécutables à exécuter réel GCC.
Si vous voulez GCC, vous devez l'installer. Vous pouvez le faire en utilisant l'un des gestionnaires de paquets, tels que MacPorts (celle que je connais). Je suis sûr que vous pourriez aussi utiliser Homebrew.
Vous ne devez pas modifier quoi que ce soit dans /usr/bin. Si vous avez déjà fait, vous devez restaurer ce que vous avez changé, si possible.
Bien comportés les gestionnaires de paquets sera également de ne pas modifier ce répertoire. Ils devraient installer dans un autre répertoire, par exemple /opt/local/bin, /usr/local/bin, ou similaire. Dans ce cas, vous devez modifier votre
PATH
de mettre ces répertoires plus tôt que /usr/bin.OriginalL'auteur Ken Thomases
Vous ne devriez pas faire cela. Beaucoup d'outils s'appuient sur l'installation des binaires pour point à ce qu'ils devraient. Une autre option est de définir la variable d'environnement
CC
àgcc
, et d'invoquer la compilation avec$CC ...
plutôt quecc ...
; cette variable d'environnement seront également ramassés lors de la construction des paquets viaconfigure
(autotools) oucmake
.C'est aussi une approche compatible avec MacPorts versions de gcc (comme la plus à jour de gcc-4.9.2), qui peut être mis en place avec:
sudo port select --set gcc mp-gcc49
Je suppose que vous pourriez essayer de définir un alias, par exemple,
alias cc="gcc"
(bash) oualias cc 'gcc'
([t]csh). Mais c'est aussi problematic.Le logiciel le au moins respecter
PATH
? Vous pouvez essayer de lui donner un environnement qui ne sait sur gcc (et pas clang)sur OS X fait des appels Calng trop (en essayant
gcc -v
retourneclang-700.1.81
- la même que lorsque nous tentonscc -v
...)vous remarquerez qu'il est également configuré avec
gxx-include-dir=/usr/include/c++/4.2.1
- c'est un vieux g++ std bibliothèque. Avec pas de C++11. Il est pour le maintien des applications, etc., construit au cours d'Apple gcc / clang transition. Vous ne voulez pas cela pour un développement moderne.OriginalL'auteur Brett Hale