Bonjour à tous.
J'ai un probleme que je n'arrive pas à résoudre, et ce malgrè de nombreuses recherches sur le net.
Je cherche à créer une bibliothèque dynamique sous Linux (.so) en ligne de commande grace à g++. C'est une operation que j'ai déjà effectuée sans trop de problème grâce à la ligne de commande suivante :
g++ -fPIC -shared -o libtoto.so ../source/modules/toto.o ../source/app/titi.o
Pour cette partie je n'ai pas eu de gros souci.
Maintenant, j'ai besoin d'utiliser des bibliothèques situées dans usr/local/lib (bibliothèque d'opencv pour etre précise), et là, impossible d'obtenir un .so correct.
J'ai donc rajouté le chemin de mes bibliotheques lors de la compilation et de la création du .so, ce qui me donne :
g++ -fPIC -I/usr/local/include/opencv -L/usr/local/lib -c -o ../source/modules/toto.o ../source/modules/titi.cpp
g++ -fPIC -L/usr/local/lib -lopencv_core -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -shared -o libtoto.so ../source/modules/toto.o ../source/app/titi.o
Je n'ai aucun problème à la compilation, mais lorsque je lance la commande ldd -d libtoto.so j'obtiens :
linux-vdso.so.1 => (0x00007ffffdbff000)
libopencv_core.so.2.3 => not found
libopencv_calib3d.so.2.3 => not found
libopencv_features2d.so.2.3 => not found
libopencv_flann.so.2.3 => not found
libopencv_highgui.so.2.3 => not found
libopencv_imgproc.so.2.3 => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fb18839e000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb188119000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb187f03000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb187b70000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d77200000)
undefined symbol: _ZTVN2cv11_InputArrayE (./libtoto.so)
undefined symbol: _ZTVN2cv17FlannBasedMatcherE (./libtoto.so)
undefined symbol: _ZTVN2cv12_OutputArrayE (./libtoto.so)
Je comprends bien qu'il y a un problème avec mes lib d'opencv mais je ne vois pas comment le resoudre.
Si vous avez une idée... Merci d'avance
Partager