Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/03/2014, à 14:55

Muth

Cross compilation et OpenCV : undefined reference

Bonjour,

Je suis actuellement entrain de me mettre à la programmation sur Raspberry PI et notamment de l'utilisation de sa caméra PI 5M.

Je compte faire mon code en C sous Eclipse.

J'ai donc configuré Eclipse avec l'IDE C/C++ et installé angstrom pour la compilation croisée.

Mes programmes C marchent bel et bien avec l'architecture ARM du Raspberry.


Cependant, je dois maintenant utiliser la librairie OpenCV.

J'ai téléchargé et installé le package libcv-dev et fais les manip décrites sur ce lien : http://docs.opencv.org/doc/tutorials/in … lipse.html

Pourtant, quand je fais l'option "build all", la console me sort l'erreur suivante :

**** Build of configuration bb_debug for project cameraPI5M ****

make all 
Building file: ../main.c
Invoking: GCC C Compiler
/usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gcc -I/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/usr/include -I/usr/include/opencv -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.c"
Finished building: ../main.c
 
Building target: cameraPI5M
Invoking: GCC C Linker
/usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-gcc -L/usr/local/angstrom/arm/arm-angstrom-linux-gnueabi/lib -L/usr/lib -o "cameraPI5M"  ./main.o   -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
/usr/lib/libopencv_core.so: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [cameraPI5M] Error 1

**** Build Finished ****

J'ai vérifié mes chemins d'accès aux librairies, il n'y a pas de souci de ce côté là...

Merci d'avance pour toute aide apportée !

Bonne journée wink

Dernière modification par Muth (Le 10/03/2014, à 13:52)

Hors ligne

#2 Le 07/03/2014, à 15:11

claudius01

Re : Cross compilation et OpenCV : undefined reference

Bonjour,

Je pense que le fichier '/usr/lib/libopencv_core.so' indiqué dans l'erreur est celui de Linux (gcc) et non celui attendu par le cross-compilateur pour Arm (arm-angstrom-linux-gnueabi-gcc).

Que donne la commande 'file' ?

$ file /usr/lib/libopencv_core.so
$ file <un fichier produit par le cross-compilateur comme './main.o'>

Cordialement, A+
--
Claudius

Hors ligne

#3 Le 07/03/2014, à 15:38

Muth

Re : Cross compilation et OpenCV : undefined reference

Bonjour,

Tout d'abord, merci de m'aider à résoudre ce problème hmm

La première ligne de commande donne :

file /usr/lib/libopencv_core.so
/usr/lib/libopencv_core.so: symbolic link to `libopencv_core.so.2.3'

La seconde donne ceci :

file ./main.o
./main.o: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped

Hors ligne

#4 Le 07/03/2014, à 15:49

claudius01

Re : Cross compilation et OpenCV : undefined reference

Très bien pour le './main.o'

Quant à l'autre, refaire la commande 'file' sur le fichier pointé sur le lien ('libopencv_core.so.2.3' qui peut être aussi un lien ;-)

Hors ligne

#5 Le 07/03/2014, à 15:57

Muth

Re : Cross compilation et OpenCV : undefined reference

Je viens de refaire la commande :

file /usr/lib/libopencv_core.so.2.3
/usr/lib/libopencv_core.so.2.3: symbolic link to `libopencv_core.so.2.3.1'

Je me suis douté qu'il fallait continuer jusqu'à ne plus avoir de lien symbolique donc j'ai refait la manip :

file /usr/lib/libopencv_core.so.2.3.1
/usr/lib/libopencv_core.so.2.3.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x51f0adbb88d6fe3ec55cc9ac3b67f645314e5d8d, stripped

Voilà smile

Hors ligne

#6 Le 07/03/2014, à 16:06

claudius01

Re : Cross compilation et OpenCV : undefined reference

Parfait, diagnostic confirmé:

1) ./main.o: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
2) /usr/lib/libopencv_core.so.2.3.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x51f0adbb88d6fe3ec55cc9ac3b67f645314e5d8d, stripped

Y'a plus qu'à mettre la main sur le projet OpenCv pour ARM ;-)

Edit: Il semble que le sujet a été abordé: cf. Recherche OpenCV + ARM sur le forum

Dernière modification par claudius01 (Le 07/03/2014, à 16:48)

Hors ligne

#7 Le 07/03/2014, à 16:47

Muth

Re : Cross compilation et OpenCV : undefined reference

Merci pour l'aide, je viens de faire les étapes de ce petit tuto !

Je rencontre cependant une nouvelle difficulté :

cmake -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=~/../../usr/include/opencv/platforms/linux/arm-gnueabi.toolchain.cmake ~/../../usr/include/opencv
CMake Error: The source directory "/usr/include/opencv" does not appear to contain CMakeLists.txt.

Donc j'entends bien que le fichier CMakeLists.txt n'est pas dans le dossier "opencv" mais n'est-ce pas le but de cette manipulation que de le créer ?

Pour la compréhension :
Je suis en "CD" dans un répertoire "build_softfp" que j'ai créé dans mon projet C (/home/moi/projet/build_softfp)
Le chemin suivant

~/../../usr/include/opencv/

est le chemin qui mène aux sources de l'opencv depuis le répertoire courant.

Hors ligne

#8 Le 07/03/2014, à 16:55

claudius01

Re : Cross compilation et OpenCV : undefined reference

Désolé, je n'utilise pas CMake
=> Peut-être qu'une bonne âme peut prendre le relais
Sinon, j'ai reédité mon précédent post #6 avec les fils de discussion sur notre forum concernant ce sujet

Hors ligne

#9 Le 07/03/2014, à 17:01

Muth

Re : Cross compilation et OpenCV : undefined reference

Oui, j'ai vu l'édit wink

J'étais déjà allé voir ce lien mais je n'ai pas réussi à en extraire une solution pour moi...

Et si tu as une solution sans CMake, je suis preneur^^ (Au stade où j'en suis, je ne sais pas si on peut dire que j'ai utilisé CMake x))

Merci quand même en tout cas même si tu ne peux pas m'aider davantage wink

Hors ligne

#10 Le 07/03/2014, à 17:26

claudius01

Re : Cross compilation et OpenCV : undefined reference

Ok merci...

S'agissant de "Et si tu as une solution sans CMake...", sauf erreur de ma part, je pense que c'est faisable de tout faire avec gmake en recréant à l'identique la production avec toutes les options de compilation / édition de lien dans un makefile
=> Si ce n'était pas le cas, que celui qui sait le dise ou qu'il se taise à jamais ;-)

Sinon, ce projet OpenCV ne serait-il pas déjà disponible pour la Framboise/ARM avec ses librairies, dépendances et autres include ?
=> Cela serait bien, vu le nombre de gens qui rament ;-(

Hors ligne

#11 Le 10/03/2014, à 11:56

Muth

Re : Cross compilation et OpenCV : undefined reference

Re-bonjour !

J'ai tout réinstallé et repris les étapes les unes après les autres.

J'ai réussi à trouver mon problème sauf qu'un autre a fait son apparition...

Voici les erreurs que me ressort un "build" :

/lib/libopencv_core.so: undefined reference to `__aeabi_atexit@CXXABI_ARM_1.3.3'
/lib/libopencv_core.so: undefined reference to `std::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'
/libopencv_highgui.so: undefined reference to `__fdelt_chk@GLIBC_2.15'
/lib/libopencv_core.so: undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/lib/libopencv_core.so: undefined reference to `std::ctype<char>::_M_widen_init() const@GLIBCXX_3.4.11'
/lib/libopencv_contrib.so: undefined reference to `std::__detail::_List_node_base::swap(std::__detail::_List_node_base&, std::__detail::_List_node_base&)@GLIBCXX_3.4.15'
/lib/libopencv_calib3d.so: undefined reference to `std::__detail::_List_node_base::_M_transfer(std::__detail::_List_node_base*, std::__detail::_List_node_base*)@GLIBCXX_3.4.15'
/lib/libopencv_highgui.so: undefined reference to `__longjmp_chk@GLIBC_2.11'
collect2: ld returned 1 exit status
make: *** [cameraPI5M] Error 1

Apparemment il me manque des fichiers GLIBC mais j'ai installé le package libglib-2.0.0 qui est la dernière (aucune update possible via console). Je ne sais pas comment fixer ce problème du coup...

J'ai fait des recherches mais rien de bien concluant pour régler mon souci... Si vous avez des pistes, je suis preneur !

Merci smile

Hors ligne

#12 Le 11/03/2014, à 14:13

claudius01

Re : Cross compilation et OpenCV : undefined reference

Bonjour,

Je crains que la glibc version 2.0.0 soit un peu vieillotte (au vu de http://www.gnu.org/software/libc/ et http://www.gnu.org/software/libc/)


Cordialement, A+
--
Claudius

Hors ligne