12
votes

Erreur dans la fabrication d'oppencv

Je reçois cette erreur:

OpenCV-2.4.3 / Modules / Caractéristiques2D / SRC / FREAK.CPP: 437: ERREUR: Impossible de Trouvez un registre pour déverser dans la classe 'General_regs'

Après avoir fait: xxx

La même procédure fonctionne sur une autre machine. Des idées?


4 commentaires

C'est peut-être un bug de votre GCC: gcc.gnu.org/bugzilla/show_bug .CGI? ID = 35135


Je reçois la même erreur.


Je n'ai pas accès à la modification de la GCC sur cette machine. Est-il possible d'en quelque sorte dire CMAKE de le compiler différemment?


Ou en quelque sorte désactiver la compilation de ce fichier dans le maquillage sans réduire les fonctionnalités de la bibliothèque OpenCV.


4 Réponses :


7
votes

J'ai lutté avec cela pendant plusieurs heures également sur mes centos 5.x Boxen, et voici ma solution.

Il est évident que vous devez mettre à jour «GCC» mais à la mise à niveau de manière native via RPM ou simplement saisir des tours de vitesse au hasard, causant des problèmes de configuration de configuration sérieux sur votre serveur. Je n'ai pas le temps de compiler GCC / G ++ via Source en ce moment. Après avoir pâté du repo pendant un moment, j'ai constaté qu'il y avait, en effet, une libération 4.x de GCC dans la base repo. P>

Faites ceci (ou une personne avec "racine" pour le faire Cas d'OP qui n'a pas accès): p>

  # cd /path/to/OpenCV-2.4.3
  # mkdir release && cd release 
  # env CC=/usr/bin/gcc44 CXX=/usr/bin/g++44 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/place/to/install/ -D BUILD_PYTHON_SUPPORT=ON /path/to/OpenCV-2.4.3/


1 commentaires

Je résolvai-je aussi le problème aussi. Si vous supprimez l'option d'optimisation pour la compilation de Freak.cpp, cela fonctionne. Vous devez creuser dans le maquillage pour enlever -o pour freak.cpp. Je vais une réponse plus complète quand j'ai du temps.



15
votes

Vous devez creuser dans les maquillages pour retirer -o pour freak.cpp.

mise à jour: C'est exactement comment on devrait le faire (testé avec 2.4.3 et 2.4.4). P>

Vous devez modifier P>

.... YOUR_COMPILER $(CXX_DEFINES) $(CXX_FLAGS) -O0 ...


1 commentaires

Merci! Je dois ajouter que la mine n'a pas -O3 ou tout -o et c'est -o qui signifie le fichier objet que je suppose. Donc, le résultat est comme ce ... $ (cxx_flags) -O0 -O .... et continue de construire.



1
votes

avait le même problème et résolu comme wisehippy avec un léger changement: xxx


0 commentaires

1
votes

J'ai trouvé le problème à résoudre une fois que j'ai mis à jour mon C ++ pour point sur g ++ 44 , au lieu du g ++ qui était 4.1.

comme la racine vérifie que les fichiers sont les mêmes avant de faire cette étape, il peut ne pas être nécessaire pour vous. xxx

Il ne devrait y avoir rien de retour si le Les fichiers sont les mêmes. Si tel est le cas, continuez. Sauvegardez votre ancien fichier. Vous pouvez supprimer également le fichier car il est identique à g ++ , mais j'aime faire attention. xxx

Créer un lien de sorte que C ++ Points à votre g ++ 44 . Vous pouvez également utiliser un lien symbolique ici aussi. xxx

fait.


0 commentaires