2012-12-24 1 views
29

J'ai compilé clang pour l'utiliser comme un compilateur croisé pour ARM (en le configurant avec ./configure --target=armv7l-unknown-linux-gnueabihf), mais quand j'essaye de compiler n'importe quel code C, il essaie d'utiliser /usr/bin/as. J'ai déjà compilé binutils pour ARM, et ils sont dans un répertoire séparé. Comment puis-je diriger clang (ou llvm) pour utiliser l'assembleur que je spécifie?Comment utiliser l'assembleur personnalisé pour clang?

+0

Je sais que je l'ai fait récemment ly - laissez-moi voir si j'ai des fichiers de configuration autour. Pour ARM ne devrait-il pas utiliser le générateur de code machine au lieu d'essayer d'exécuter un assembleur de toute façon? Avez-vous essayé de passer '--integrated-as'? Pouvez-vous montrer un exemple de ligne de commande et de sortie en utilisant '-v'? –

+0

Ma ligne de configuration, bien qu'elle ne ressemble pas à beaucoup d'aide: '../llvm/configure - target = mipsel-sde-elf --prefix =/un/prefix --enable-optimized'. Cela a bien fonctionné et a couru '/ some/prefix/mipsel-sde-elf-as'. Cela dit, j'utilise normalement l'assembleur intégré, donc je n'ai pas testé depuis un moment. –

+0

@CarlNorum J'ai aussi l'assembleur intégré ('armv7l-inconnu-linux-gnueabihf-llvm-as') dans le même dossier que clang, mais il utilise toujours'/usr/bin/as'. Je ne sais pas si 'armv7l-unknown-linux-gnueabihf-llvm-as' appelle en interne'/usr/bin/as'. – JosephH

Répondre

0

J'ai toujours eu des problèmes pour configurer à partir du répertoire source en utilisant ./configure et j'ai abandonné à la fin. Ces jours-ci, je configure toujours à partir d'un répertoire distinct, c'est-à-dire ..//configure bien que l'on me dise qu'il est recommandé d'utiliser un chemin absolu pour configurer. Vos binutils ARM doivent être installés dans le même préfixe que vous utilisez pour clang et assurez-vous qu'ils sont dans le chemin lorsque vous configurez & build clang - c'est-à-dire PATH =/some/prefix/bin: $ PATH;/configure --target = armv7l-inconnu-linux-gnueabihf. Si vous les gardez dans des répertoires séparés à des fins d'emballage, faites l'installation suivante: DESTDIR = help.

Je ne construis généralement pas clang mais les scripts de constructions que j'utilise pour devkitARM pourrait être utile - http://sourceforge.net/p/devkitpro/buildscripts/ci/c372699fc7b4de90eb044314ce5bed04db640291/tree/

+0

Désolé, mais je n'ai jamais configuré clang dans le même répertoire que le répertoire source avant. La commande que j'ai incluse dans ma question a omis le drapeau '--prefix' pour la brièveté. Comme vous pouvez le voir dans les commentaires de CarlNorum, j'ai remarqué son inclusion du drapeau '--prefix', et cela n'a toujours pas fonctionné pour moi. La chose étrange est que le processus de compilation semble en effet créer le binaire assembleur intégré dans le dossier 'bin' (avec le triple cible correct), mais il ne l'utilise jamais. Je vais certainement jeter un oeil au script de construction que vous avez inclus dans votre réponse. – JosephH

2

Essayez de passer l'option --host pour configurer ce qui entraînera tous les utilitaires cc ar etc à préfixe armv7l- unknown-linux-gnueabihf- par exemple:

./configure --host=armv7l-unknown-linux-gnueabihf --build=i686-unknown-linux-gnu 

Puisque vous utilisez configurer avec autotools, espérons jeter un oeil à: automake Cross compiling

+0

Je pense que vous avez mal compris la question. @JosephH vous demande comment croiser les programmes de compilation en utilisant clang, mais votre réponse se rapporte à "comment croiser compile clang lui-même". –

Questions connexes