Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi di compilazione su C++ producer SDK per Raspberry Pi
Se riscontri un problema di compilazione e desideri provare diversi argomenti CMake, assicurati di eseguire una build pulita. Elimina open-source dependency le build cartelle e prima di riprovare.
Crea problemi con OpenSSL
Se ricevi un risultato simile al seguente, indica che OpenSSL ha rilevato erroneamente l'architettura del tuo 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]'
In questo esempio, sta tentando di creare una versione a 64 bit (linux-aarch64) quando questo Raspberry Pi è effettivamente a 32 bit. Alcuni dispositivi Raspberry Pi hanno un kernel a 64 bit, ma uno spazio utente a 32 bit.
Determina per quale architettura OpenSSL sta cercando di creare. Puoi trovare la riga di registro durante la configure fase di 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
Verifica l'architettura del tuo sistema:
Esamina il bit-ness del kernel: esegui
uname -mControlla lo spazio utente bit-ness: run
getconf LONG_BIT
Puoi anche rivedere le informazioni sulla CPU con cat /proc/cpuinfo i nostri comandi. lscpu
Risoluzione:
Per risolvere questo problema, aggiungi il seguente argomento CMake durante la compilazione, per assicurarti che OpenSSL venga compilato correttamente per l'architettura ARM a 32 bit:
-DBUILD_OPENSSL_PLATFORM=linux-armv4
Risolvi i problemi di caricamento di kvssink in GStreamer
Conferma GST_PLUGIN_PATH
Assicurati che la variabile di GST_PLUGIN_PATH ambiente nella sessione di shell corrente punti alla directory che contienekvssink. Le variabili di ambiente sono specifiche della sessione, quindi dovrai impostarle per ogni nuova sessione. Per rendere permanente questa modifica, vedi «Aggiorna lo script di avvio della shell per includere l'impostazione della variabile di ambiente GST_PLUGIN_PATH».
Errore: impossibile aprire il file oggetto condiviso: nessun file o directory di questo tipo
Se riscontri l'erroreCannot open shared object file: No such file or directory, esegui il comando seguente:
gst-inspect-1.0 /path/to/libgstkvssink.so
Se ricevete il seguente output, indica che il linker dinamico non è in grado di individuare le librerie richieste perkvssink. Ciò si verifica in genere a causa di:
kvssinkTrasferimento in un luogo diverso da quello in cui è stato costruito.Cross-compiling per l'architettura della CPU sbagliata.
Manca una dipendenza richiesta.
Output:
WARNING: erroneous pipeline: no element "kvssink" error while loading shared libraries: libcproducer.so: cannot open shared object file: No such file or directory
Risoluzione:
Per le librerie spostate, aggiungete la cartella contenente le librerie mancanti aLD_LIBRARY_PATH.
Dalla directory principale del repository originale, è possibile individuare la libreria mancante utilizzando l'findutilità. Nel terminale, digita:
find . -name "*libcproducer*"
Output:
./build/dependency/libkvscproducer/kvscproducer-src/libcproducer.so
Il separatore del percorso dei file sui dispositivi Linux è:. Il comando seguente aggiunge un nuovo percorso di cartella alla variabile di LD_LIBRARY_PATH ambiente esistente, preservando i valori precedenti.
Nel terminale, digita:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/build/dependency/libkvscproducer/kvscproducer-src
Importante
Le variabili di ambiente sono specifiche della sessione. Per rendere permanenti le modifiche tra le sessioni, modifica lo script di avvio della shell.
Potrebbe essere necessario aggiungerlo anche open-source/local/lib al tuo$LD_LIBRARY_PATH.
Errore:. /path/to/libcproducer.so.1: intestazione ELF non valida
Se ricevete questo errore durante il caricamento delle librerie condivise, potrebbe essere dovuto a collegamenti simbolici non funzionanti (). symlinks I collegamenti simbolici possono interrompersi se il sistema operativo del computer host non corrisponde a quello del computer di destinazione. Ad esempio, la compilazione incrociata su un Raspberry MacBook Pi.
Un'altra possibile causa è che i file binari compilati erano per l'architettura sbagliata. Ad esempio, se i file binari sono stati compilati per x86 (Raspberry Pi utilizza CPU ARM).
Vai alla posizione della libreria specificata nell'errore e digita: ls
-la per ispezionare la libreria. symlinks
Risposta:
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
Nell'output di esempio sopra riportato, non symlinks sono interrotti. Broken symlinks non avrà frecce puntate verso i bersagli.
Risoluzione:
Ci sono due opzioni per correggere i collegamenti simbolici:
-
Consigliato: ricreare il comando
symlinkwith theln. Type:ln -s /path/to/actual/library /path/to/symlink -
Copia il file di libreria effettivo e rinominalo in modo che corrisponda a.
symlinkNota
Questa opzione comporta un maggiore utilizzo dello spazio di archiviazione.
Come best practice, è consigliabile compilare sullo stesso sistema operativo utilizzando strumenti come Docker per evitare problemi di compilazione incrociata.
Dipendenze mancanti:
Se il nome della libreria mancante inizia conlibkvs, consulta la sezione «librerie spostate» sopra per installare le librerie Kinesis Video Streams dal dispositivo host al dispositivo di destinazione.
Altrimenti, segui questa procedura Prerequisiti per l'installazione del software per assicurarti che tutti i prerequisiti del software open source siano installati sul dispositivo di destinazione.