Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Solución de problemas de compilación en el SDK productor de C++ para Raspberry Pi
Si te encuentras con un problema de compilación y quieres probar diferentes argumentos de CMake, asegúrate de realizar una compilación limpia. Elimina las build carpetas open-sourcedependency, y antes de volver a intentarlo.
Problemas de compilación con OpenSSL
Si recibe un resultado similar al siguiente, significa que OpenSSL ha detectado incorrectamente la arquitectura de su sistema.
crypto/md5/md5-aarch64.S: Assembler messages:
crypto/md5/md5-aarch64.S:3: Error: unrecognized symbol type ""
crypto/md5/md5-aarch64.S:6: Error: bad instruction `stp x19,x20,[sp,#-80]!'
crypto/md5/md5-aarch64.S:7: Error: bad instruction `stp x21,x22,[sp,#16]'
crypto/md5/md5-aarch64.S:8: Error: bad instruction `stp x23,x24,[sp,#32]'
crypto/md5/md5-aarch64.S:9: Error: bad instruction `stp x25,x26,[sp,#48]'
En este ejemplo, está intentando crear una versión de 64 bits (linux-aarch64) cuando esta Raspberry Pi es en realidad de 32 bits. Algunos dispositivos Raspberry Pi tienen un núcleo de 64 bits, pero un espacio de usuario de 32 bits.
Determine para qué arquitectura está intentando compilar OpenSSL. Puedes encontrar la línea de registro durante el configure paso de OpenSSL:
[ 33%] Performing update step for 'project_libopenssl' -- Already at requested tag: OpenSSL_1_1_1t [ 44%] No patch step for 'project_libopenssl' [ 55%] Performing configure step for 'project_libopenssl' Operating system: x86_64-whatever-linux2 Configuring OpenSSL version 1.1.1t (0x1010114fL) for linux-x86_64 Using os-specific seed configuration Creating configdata.pm Creating Makefile
Verifique la arquitectura de su sistema:
Revise el tamaño de bits del kernel: ejecute
uname -mRevise la densidad de bits del espacio de usuario: ejecute
getconf LONG_BIT
También puede revisar la información de la CPU con los comandos cat /proc/cpuinfo olscpu.
Solución:
Para resolver este problema, agrega el siguiente argumento de CMake al compilar, para asegurarte de que OpenSSL se compila correctamente para la arquitectura ARM de 32 bits:
-DBUILD_OPENSSL_PLATFORM=linux-armv4
Soluciona los problemas de carga de kvssink en GStreamer
Confirme GST_PLUGIN_PATH
Asegúrese de que la variable de GST_PLUGIN_PATH entorno de su sesión de shell actual apunte al directorio que contienekvssink. Las variables de entorno son específicas de la sesión, por lo que tendrás que configurarlas para cada nueva sesión. Para que este cambio sea permanente, consulta la sección «Actualiza el script de inicio de tu shell para incluir la configuración de la variable de entorno GST_PLUGIN_PATH».
Error: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio
Si se produce el errorCannot open shared object file: No such file or directory, ejecute el siguiente comando:
gst-inspect-1.0 /path/to/libgstkvssink.so
Si recibe el siguiente resultado, indica que el enlazador dinámico no puede encontrar las bibliotecas necesarias parakvssink. Esto suele ocurrir debido a:
Mudarse
kvssinka un lugar diferente del lugar en el que se construyó.Cross-compiling para una arquitectura de CPU incorrecta.
Falta una dependencia obligatoria.
Salida:
WARNING: erroneous pipeline: no element "kvssink" error while loading shared libraries: libcproducer.so: cannot open shared object file: No such file or directory
Solución:
En el caso de las bibliotecas trasladadas, añada el directorio que contiene las bibliotecas que faltan aLD_LIBRARY_PATH.
Desde el directorio raíz del repositorio original, puede localizar la biblioteca que falta mediante la find utilidad. En la terminal, escriba:
find . -name "*libcproducer*"
Salida:
./build/dependency/libkvscproducer/kvscproducer-src/libcproducer.so
El separador de rutas de archivos en los dispositivos Linux es:. El siguiente comando añade una nueva ruta de carpeta a la variable de LD_LIBRARY_PATH entorno existente, conservando los valores anteriores.
En tu terminal, escribe:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/build/dependency/libkvscproducer/kvscproducer-src
importante
Las variables de entorno son específicas de la sesión. Para que los cambios persistan entre las sesiones, modifique el script de inicio del shell.
Es posible que también tengas que añadirlo open-source/local/lib a tu$LD_LIBRARY_PATH.
Error:. /path/to/libcproducer.so.1: encabezado ELF no válido
Si recibes este error al cargar bibliotecas compartidas, puede deberse a que los enlaces simbólicos están rotos (). symlinks Los enlaces simbólicos pueden interrumpirse si el sistema operativo de la máquina host no coincide con el de la máquina de destino. Por ejemplo, la compilación cruzada en una MacBook para una Raspberry Pi.
Otra posible causa es que los binarios compilados eran para una arquitectura incorrecta. Por ejemplo, si los binarios se crearon para x86 (Raspberry Pi usa CPU ARM).
Navega hasta la ubicación de la biblioteca especificada en el error y escribe: ls
-la para inspeccionar la biblioteca. symlinks
Respuesta:
drwxr-xr-x 16 me staff 512 Sep 10 17:16 . drwxr-xr-x 7 me staff 224 Jan 6 23:46 .. drwxr-xr-x 4 me staff 128 Sep 10 17:16 engines-1.1 -rwxr-xr-x 1 me staff 2294496 Sep 10 17:16 libcrypto.1.1.so -rw-r--r-- 1 me staff 4002848 Sep 10 17:16 libcrypto.a lrwxr-xr-x 1 me staff 19 Sep 10 17:16 libcrypto.so -> libcrypto.1.1.so -rwxr-xr-x 1 me staff 631176 Sep 10 17:12 liblog4cplus-2.0.3.so lrwxr-xr-x 1 me staff 24 Sep 10 17:12 liblog4cplus.so -> liblog4cplus-2.0.3.so -rwxr-xr-x 1 me staff 1012 Sep 10 17:12 liblog4cplus.a -rwxr-xr-x 1 me staff 694328 Sep 10 17:12 liblog4cplusU-2.0.3.so lrwxr-xr-x 1 me staff 25 Sep 10 17:12 liblog4cplusU.dylib -> liblog4cplusU-2.0.3.so -rwxr-xr-x 1 me staff 1017 Sep 10 17:12 liblog4cplusU.a -rwxr-xr-x 1 me staff 536416 Sep 10 17:16 libssl.1.1.so -rw-r--r-- 1 me staff 795184 Sep 10 17:16 libssl.a lrwxr-xr-x 1 me staff 16 Sep 10 17:16 libssl.so -> libssl.1.1.so drwxr-xr-x 6 me staff 192 Sep 10 17:16 pkgconfig
En el ejemplo de salida anterior, no symlinks están rotos. Los que symlinks estén rotos no tendrán flechas que apunten a sus objetivos.
Solución:
Hay dos opciones para corregir los enlaces simbólicos:
-
Recomendado: vuelva a crearlos
symlinkcon ellncomando. Escriba:ln -s /path/to/actual/library /path/to/symlink -
Copie el archivo de biblioteca actual y cámbiele el nombre para que coincida con.
symlinknota
Esta opción conduce a un mayor uso del almacenamiento.
Como práctica recomendada, compile en el mismo sistema operativo con herramientas como Docker para evitar problemas de compilación cruzada.
Dependencias faltantes:
Si el nombre de la biblioteca que falta empieza porlibkvs, consulte la sección «bibliotecas trasladadas» que aparece más arriba para instalar las bibliotecas de Kinesis Video Streams del dispositivo host al dispositivo de destino.
De lo contrario, siga Requisitos previos de instalación del software este procedimiento para asegurarse de que todos los requisitos previos del software de código abierto estén instalados en el dispositivo de destino.