falla al compilar con ffmpeg y contrib en frambuesa pi 3 modelo B (debian)

3
  • OpenCV = & gt; 3.3.0
    • Sistema operativo / plataforma = & gt; frambuesa pi 3 modelo B (debian)
    • Compilador = & gt; Makefiles UNIX
    • Cmake-GUI = & gt; 3.6.2

https://pastebin.com/5VGHA92m (construir salida desde terminal)

[39%] Vinculación de la biblioteca compartida CXX ../../lib/libopencv_videoio.so   / usr / bin / ld: /usr/local/lib/libx264.a(common.o): reubicación   R_ARM_MOVW_ABS_NC contra `un símbolo local 'no se puede usar al hacer   un objeto compartido; recompile con -fPIC /usr/local/lib/libx264.a: error   agregando símbolos: valor incorrecto collect2: error: ld devolvió 1 estado de salida   modules / videoio / CMakeFiles / opencv_videoio.dir / build.make: 228: receta   para el destino 'lib / libopencv_videoio.so.3.3.0' falló make [2]: *   [lib / libopencv_videoio.so.3.3.0] Error 1 CMakeFiles / Makefile2: 4311:   Receta para 'módulos / videoio / CMakeFiles / opencv_videoio.dir / all' de destino   error al hacer [1]: * [modules / videoio / CMakeFiles / opencv_videoio.dir / all] Error 2   Makefile: 160: la receta para el objetivo 'all' falló make: *** [all] Error 2

utilizando opencv = 3.3.0 opencv_contrib = 3.3.0

antes de construirlo BUILD_opencv_world, BUILD_TBB, WITH_TBB, BUILD_opencv_python2, BUILD_opencv_python3, WITH_MATLAB, CON_CUDA, BUILD_opencv_dnn, WITH_OPENGL, WITH_QT

y comprobado: WITH_FFMPEG (predeterminado)

Instalé todas las bibliotecas (mencionadas en el siguiente enlace) https://pastebin.com/vFkYzQ08 (bibliotecas de requisitos previos antes de construir)

También intenté eliminar todas esas bibliotecas y compilar fuentes opencv con ffmpeg y contrib (pero la compilación se bloquea al 23% para opencv 3.4 y al 39% para opencv 3.3)

Deekshith MR
fuente
El administrador de paquetes de Debian no instala cosas en / usr / local / lib, por lo que debe haberlo creado usted mismo. Quitaría la versión estática de libx264 (la .a) y solo dejaría la versión compartida (.so). La versión compartida ya debe ser fPIC y resolverá el problema de vinculación. Si no tiene una versión compartida, debe reconstruirla para generar la versión compartida de la biblioteca o instalar desde apt.
Andrew Domaszek
Esto podría ser útil , pero recomiendo seguir esta guía. Así es como instalé OpenCV en mi Pi.
Jacob

Respuestas:

2

Parece que hay algún conflicto con la biblioteca x264 (puede instalarlo más tarde una vez que haya terminado con OpenCV construir), eliminar esa biblioteca y luego instalar gstreamer

sudo apt-get install gstreamer1.0

Instalar dependencias desde
https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/

y

https://www.raspberrypi.org/forums/viewtopic.php?t=80601

A continuación se muestra la salida de CMake

Configuración general para OpenCV 3.4.0-dev
=====================================
Control de versiones: 3.4.0-307-g14089b1

Plataforma:
Marca de tiempo: 2018-02-06T06: 30: 15Z
Anfitrión: Linux 4.9.35-v7 + armv7l
CMake: 3.6.2
Generador CMake: Unix Makefiles
Herramienta de compilación CMake: / usr / bin / make
Configuración: Lanzamiento

Características de la CPU / HW:
Base:
solicitado: DETECTAR
desactivado: VFPV3 NEON

C / C ++:
¿Construido como libs dinámico ?: SI
Compilador de C ++: / usr / bin / c ++ (ver 4.9.2)
Banderas C ++ (Release):

-fsigned-char -W -Wall -Werror = return-type -Werror = no-virtual-dtor -Werror = address -Werror = secuencia-punto -Wformor = format-security -Wmissing-declaations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-estrechamiento -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction -secciones -fdata-secciones -mfp16-format = ieee -fvisibility = oculto -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG

Indicadores de C ++ (depuración): -fsigned-char -W -Wall -Werror = return-type -Werror = dtor no virtual -Werror = address -Werror = secuencia-punto -Wformat -Werror = format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-comment -fdiagnostics-show -pthread -fomit -frame-puntero -funciones-secciones -fdata-secciones -mfp16-format = ieee -fvisibility = oculto -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG

Compilador de C: / usr / bin / cc
Banderas C (Liberación): -fsigned-char -W -Wall -Werror = return-type -Werror = dtor no virtual -Werror = address -Werror = sequence-point -Wformat -Werror = format-security -Wissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wunititialized -Winit-self -Wno-narrowing -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -función -secciones -fdata-secciones -mfp16-formato = ieee -fvisibility = oculto -O3 -DNDEBUG -DNDEBUG

Banderas C (depuración): -fsigned-char -W -Wall -Werror = return-type -Werror = dtor no virtual -Werror = address -Werror = secuencia-punto -Wformat -Werror = format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wunititialized -Winit-self -Wno-narrowing -Wno-comment -fdiagnostics-show-option -pthread -fomit-frame-pointer -función -secciones -fdata-secciones -mfp16-formato = ieee -fvisibility = oculto -g -O0 -DDEBUG -D_DEBUG

Banderas del enlazador (Release):
Banderas del enlazador (depuración):
ccache: NO
Cabeceras precompiladas: SI
Dependencias extra: dl m pthread rt
Dependencias de terceros


Módulos de OpenCV:
Para construir: calib3d core features2d flann highgui
imgcodecs imgproc ml objdetect foto forma costura superres ts   vídeo
videostab videoio
Deshabilitado: dnn java_bindings_generator js
python_bindings_generator world
Deshabilitado por dependencia: -
No disponible: cudaarithm cudabgsegm cudacodec
cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect
cudaoptflow cudastereo cudawarping cudev java python2 python3   verbigracia
Aplicaciones: pruebas de aplicaciones perf_tests.
Documentación: NO
Algoritmos no libres: NO

GUI:
GTK +: SÍ (ver 3.14.5)
GThread: SI (ver 2.42.1)
GtkGlExt: NO
Soporte VTK: NO

Media I / O:
ZLib: /usr/lib/arm-linux-gnueabihf/libz.so (ver 1.2.8)
JPEG: /usr/lib/arm-linux-gnueabihf/libjpeg.so (ver 80)
WEBP: compilación (ver codificador: 0x020e)
PNG: /usr/lib/arm-linux-gnueabihf/libpng.so (ver 1.2.50)
TIFF: compilación (ver 42 - 4.0.9)
JPEG 2000: /usr/lib/arm-linux-gnueabihf/libjasper.so (ver 1.900.1)
OpenEXR: construir (ver 1.7.1)

Video I / O:
DC1394: NO
FFMPEG: SI
avcodec: SI (ver 56.1.0)
avformat: YES (ver 56.1.0)
avutil: sí (ver 54.3.0)
Escala: SI (ver 3.0.0)
Ejemplo: SI (ver 2.1.0)
GStreamer:
base: SI (ver 1.4.4)
video: SI (ver 1.4.4)
aplicación: SI (ver 1.4.4)
riff: SI (ver 1.4.4)
pbutils: SI (ver 1.4.4)
libv4l / libv4l2: NO
v4l / v4l2: linux / videodev2.h
gPhoto2: NO

Marco paralelo: pthreads

Traza: SI (incorporado)

Otras bibliotecas de terceros:
Lapack: NO
Eigen: NO
HAL personalizado: SÍ (caroteno (ver 0.0.1))
Protobuf: construir (3.5.1)

OpenCL: SÍ (sin características adicionales)
Incluir ruta: /home/pi/OpenCV/Source/opencv/3rdparty/include/opencl/1.2
Bibliotecas de enlaces: carga dinámica

Python (para construir):

Instalar en:
/ usr / local
-------------------------------------------------- ---------------

Configurando hecho

Suraksha Ajith
fuente