2017-06-16 2 views
1

Après avoir compilé avec succès qt5.5.1 et opencv3.1.0, il existe aussi un problème (bouleversement!).Comment utiliser pkg-config en qt pour crosscompile

Permettez-moi de le dire en datail:

A.on mon Ubunutu PC, lors de la compilation des programmes qt avec OpenCV, j'ai généralement deux façons,

le premier est en IDE qt, j'ajouter deux supplémentaires lignes .pro

#.pro 
CONFIG += link_pkgconfig 
PKGCONFIG += opencv 

le second est dans le terminal, la ligne de commande, par exemple:

g++ main.cpp -o main `pkg-config opencv --cflags --libs` 

Je sais la raison pour laquelle je peux utiliser pkg-config, lorsqu'il est exécuté

echo $PKG_CONFIG_PATH 

Je reçois:

:/usr/local/opencv-3.1.0/lib/pkgconfig:/usr/local/opencv-3.1.0/lib/pkgconfig: 

b. Alors que pour crosscompile, comment puis-je utiliser pkg-config?

J'ai essayé de modifier le /home/lmk/.bashrc en ajoutant:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/newdisk/optnew/opencv-arm/lib/pkgconfig 
export PKG_CONFIG_PATH 

puis ouvrez un nouveau terminal, exécutez:

echo $PKG_CONFIG_PATH 

qui me donne:

:/usr/local/opencv-3.1.0/lib/pkgconfig:/usr/local/opencv-3.1.0/lib/pkgconfig:/home/newdisk/optnew/opencv-arm/lib/pkgconfig 

Le problème est: D'abord, en qt IDE et éditer le fichier .pro

#.pro 
CONFIG += link_pkgconfig 
PKGCONFIG += arm-opencv 

le résultat est:

:-1: error: arm-opencv development package not found 

En second lieu, quand dans le terminal:

arm-linux-g++ `pkg-config arm-opencv --cflags --libs` show.cpp -lpthread -lrt -o show 

/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libavcodec.so.57, needed by /home/newdisk/optnew/opencv-arm/lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link) 
/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libavformat.so.57, needed by /home/newdisk/optnew/opencv-arm/lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link) 
/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libavutil.so.55, needed by /home/newdisk/optnew/opencv-arm/li/libopencv_highgui.so, not found (try using -rpath or -rpath-link) 
/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libswscale.so.4, needed by /home/newdisk/optnew/opencv-arm/lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link) 
/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libjpeg.so.9, needed by /home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so, not found (try using -rpath or -rpath-link) 
/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: libpng16.so.16, needed by /home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so, not found (try using -rpath or -rpath-link) 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]IBJPEG_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_4' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_4' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_4' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_4' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined  reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_55' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_videoio.so: undefined reference to `[email protected]_57' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_9.0' 
/home/newdisk/optnew/opencv-arm/lib/libopencv_imgcodecs.so: undefined reference to `[email protected]_0' 
collect2: ld returned 1 exit status 

En addtion, le compilateur croisé est installé dans

/home/newdisk/optnew/opt/FriendlyARM/toolschain/4.5.1/bin 

qt compilation croisée est installé dans

/home/newdisk/optnew/qt5.5.1 

compilation croisée OpenCV est installé dans

/home/newdisk/optnew/opencv-arm 

compilation croisée de 3rdparty de OpenCV est installé dans

/home/newdisk/optnew/opencv-rely 

de 3rdparty de OpenCV sont:

zlib 
jpeg 
libpng 
yasm 
x264 
xvidcore 
ffmpeg 

Comment dois-je mettre mes variables d'environnement Faites bien fonctionner pkg-config pour que mon progr Est-ce que ams peut trouver les répertoires include et lib d'opencv-dependent aussi bien qu'opencv-rely?

+0

Si la version 2.4.9 d'opencv est suffisante alors vous pouvez installer des paquets armhf depuis les dépôts Ubuntu. Activez le support multiarch dans dpkg, installez les versions armhf des paquets avec l'habituel amd64. J'utilise une "troisième manière" de configurer un projet en faisant des constructions multi-architectures - CMake (l'option .pro devrait fonctionner aussi, mais je ne l'ai jamais utilisée). – Velkan

+0

Hier soir, j'ai essayé d'ajouter les librairies 3rdparty d'opencv et d'opencv à qt .pro avec un chemin absolu explicite comme l'awser que j'ai posté ci-dessous. J'ai ton message. Cmake est aussi un moyen de crosscopile. Que ce soit qt ou cmake est juste un outil. Je suis un débutant, quand j'ai construit opencv pour mon bras, je touche un peu cmake. @ Velkan –

Répondre

0

La nuit dernière, j'ai essayé la manière la plus directe en ajoutant le OpenCV et 3RDPARTY libs de OpenCV comme ceci:

#.pro 
###################################################################### 
# Automatically generated by qmake (3.0) Mon Nov 14 13:01:31 2016 
###################################################################### 
QT += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
TEMPLATE = app 
TARGET = ImageShow 
INCLUDEPATH += . 

# Input 
HEADERS += mywidget.h 
SOURCES += main.cpp mywidget.cpp 

INCLUDEPATH+=/home/newdisk/optnew/opencv-arm/include 

LIBS += /home/newdisk/optnew/opencv-arm/lib/libopencv_*.so \ //all opencv libs 
     /home/newdisk/optnew/opencv-rely/lib/libavcodec.so \ //opencv's 3rdparty libs 
     /home/newdisk/optnew/opencv-rely/lib/libavdevice.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libavfilter.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libavformat.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libavutil.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libjpeg.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libpng.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libpostproc.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libswresample.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libswscale.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libx264.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libxvidcore.so \ 
     /home/newdisk/optnew/opencv-rely/lib/libz.so 

Et je crosscompiled les programmes qt et couru sur ma planche à bras sucessfully, qui indiquait également que ma configuration est correcte.

Je me demande si quelqu'un d'entre vous a des façons simples de rechercher des librairies relatives, que ce soit dans qt ou dans cmake ou simplement dans termial. Je suis une main verte, et merci de répondre sincèrement!