2010-08-22 20 views
1

Dernièrement, j'ai travaillé sur OS X. Les choses se passaient assez longtemps pendant un certain temps jusqu'à ce que ld obtient sur mon système et maintenant gcc n'utilisera pas dyld. En outre, toutes mes bibliothèques partagées sont au format *.dylib, et ld ignore systématiquement leur existence. Si je mv ld de PATH, gcc se plaint simplement qu'il ne peut pas trouver ld.Force gcc à utiliser un éditeur de liens sur un autre

S'il vous plaît, aidez-moi à remettre GCC sur les rails et à utiliser ce qu'elle devrait.

Répondre

1

Vous pouvez essayer quelques options gcc. De l'man page:

 
-c Compile or assemble the source files, but do not link. The linking 
    stage simply is not done. The ultimate output is in the form of an 
    object file for each source file. 

Vous pouvez ensuite lier explicitement en utilisant tout lieur que vous voulez.

+0

Je l'ai considéré, mais il semble que ce soit beaucoup. J'aime les hacks quand ils sont amusants et correctifs à court terme, mais à long terme, ils ont besoin de vrais remplacements solides. – Eli

1

Aide-t-il à lier symboliquement ld à dyld?

mv /usr/bin/ld /usr/bin/ld.old 
ln -s /usr/bin/dyld /usr/bin/ld 

Edit: fixe ld params pour

+0

au moins sur mon système, semble fonctionner dans la direction opposée que vous avez spécifiée. Maintenant, je viens d'écrire sur dyld et j'ai besoin de l'attraper de nouveau à partir d'Apple, grogna Grognon. – Eli

+0

lol, vous avez raison, sauf normalement si le fichier existait déjà, il ne l'aurait pas écrasé. Pardon! – nicomen

+0

Vous pourriez être correct à ce sujet ne pas écraser. Malheureusement, je "dissocié", et cela supprime complètement le fichier (ce que je reçois pour charger sans lire la documentation). Il faut FOREVER pour télécharger xCode (la seule façon d'obtenir dyld) d'apple, et j'ai juste dû redémarrer. Une fois que j'aurai commencé à travailler et que je pourrai vérifier, je vous accorderai cette réponse si cela fonctionne, ce que je soupçonne. – Eli

-2

regard sur -Xlinker l'option

je l'ai reçu de man gcc

vous pouvez vérifier à l'aide des options verbeux comme -v

0

Ce ISN 't votre question exacte, mais je devais passer à ld.gold, et pour À, l'option -fuse-ld=gold à gcc était très utile.