8
votes

Le fichier a été conçu pour un format de fichier non pris en charge qui n'est pas lié à l'architecture (x86_64)

J'ai un fichier de construction sur osx lion xxx

mais lorsque j'essaie d'exécuter ce fichier, je reçois l'erreur suivante xxx

J'ai essayé d'utiliser l'indicateur -arch x86_64 mais obtenir toujours la même erreur.

exécutant la commande arch donne: i386 .

uname -a me dit: Darwin Kernel Version 11.3.0: Jan 12 18:47:41 PST 2012; root: xnu-1699.24.23 ~ 1 / version_x86_64 x86_64

J'ai également essayé d'ajouter le commutateur -march = x86-64 comme décrit dans cette réponse fichier était Construit pour i386 qui n'est pas l'architecture étant liée (x86_64) tout en compilant OPENCV2.2 pour iOS 4.2 sur Mac OSX 10.6 mais cela n'a pas fonctionné pour moi.

La sortie de la commande La ligne est la suivante: xxx


0 commentaires

3 Réponses :


4
votes
  1. Supprimez tous les fichiers d'objet. LI>
  2. réviser le maquillage plus comme: p>

    make SFLAG2=-m32
    

8 commentaires

Merci, mais je reçois toujours exactement la même erreur: "Le fichier a été conçu pour un format de fichier non pris en charge qui n'est pas lié à l'architecture (x86_64)". Le makefile est maintenant exactement le même que votre premier exemple


C'est surprenant. Pouvez-vous montrer les lignes de commande exécutées? Il devrait y avoir deux, bien sûr: une produisant le fichier et une tentative de production de l'exécutable. Que se passe-t-il si vous essayez: gcc -o bonjour hello.c , produisant le fichier d'objet directement à partir du code source? Que se passe-t-il si vous déposez la ligne VPATH ou commentez-le? Où est le fichier hello.c ? Qu'en est-il de hello.h ?


J'ai mis à jour la question avec la sortie de commande afin que je puisse le formater


Je vois la mise à jour. Étant donné que -m64 ne fonctionne pas, que se passe-t-il lorsque vous essayez -m32 à la place? Cela échoue-t-il aussi?


Lorsque j'utilise -M32, j'ai obtenu: le fichier a été conçu pour un format de fichier non pris en charge qui n'est pas lié à l'architecture (i386)


HOLD ON: la première ligne de commande - gcc -i include -std = gnu99 -m64 -c include / hello.h -o hello.o . Il ne compile pas hello.c du tout. Jetez un coup d'œil à ce que $ ^ est censé être; Vous devez probablement utiliser quelque chose comme $ * ou $ << / code> ou quelque chose pour spécifier le fichier C. Lorsque vous exécutez fichier hello.o , qu'est-ce que cela vous dit? Le fichier est vide? Vous devrez peut-être répertorier hello.c avant hello.h dans les dépendances de hello.o .


Phew! Le chapitre 10 du manuel de GNU couvre les macros telles que $ << / code> et $ ^ .


Merci je vais aller et télécharger ça



0
votes

Dans mon cas, l'option -M créait ce problème. J'ai ajouté cette option aux dépendances du projet, mais c'est en quelque sorte causé des problèmes.


1 commentaires

Votre échantillon / extrait ne pas liste -m .



1
votes

J'ai eu ce problème lorsque j'ai accidentellement inclus un fichier .h dans une archive ...


0 commentaires