Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah build pada SDK produsen C++ untuk Raspberry Pi
Jika Anda mengalami masalah build dan ingin mencoba argumen CMake yang berbeda, pastikan untuk melakukan build yang bersih. Hapus build folder open-sourcedependency,, dan sebelum Anda mencoba lagi.
Membangun masalah dengan OpenSSL
Jika Anda menerima output yang mirip dengan berikut ini, ini menunjukkan bahwa OpenSSL salah mendeteksi arsitektur sistem Anda.
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]'
Dalam contoh ini, ia mencoba untuk membangun versi 64-bit (linux-aarch64) ketika Raspberry Pi ini sebenarnya 32-bit. Beberapa perangkat Raspberry Pi memiliki kernel 64-bit, tetapi ruang pengguna 32-bit.
Tentukan arsitektur yang coba dibangun OpenSSL. Anda dapat menemukan baris log selama configure langkah untuk 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
Verifikasi arsitektur sistem Anda:
Tinjau bit-ness kernel: run
uname -mTinjau bit-ness ruang pengguna: run
getconf LONG_BIT
Anda juga dapat meninjau informasi CPU Anda dengan lscpu perintah cat /proc/cpuinfo atau.
Resolusi:
Untuk mengatasi masalah ini, tambahkan argumen CMake berikut saat membangun, untuk memastikan OpenSSL dibangun dengan benar untuk arsitektur ARM 32-bit:
-DBUILD_OPENSSL_PLATFORM=linux-armv4
Memecahkan masalah pemuatan kvssink di GStreamer
Konfirmasikan GST_PLUGIN_PATH
Pastikan variabel GST_PLUGIN_PATH lingkungan dalam sesi shell Anda saat ini menunjuk ke direktori yang berisikvssink. Variabel lingkungan bersifat khusus sesi, jadi Anda harus mengaturnya untuk setiap sesi baru. Untuk membuat perubahan ini permanen, lihat “Perbarui skrip awal shell Anda untuk menyertakan pengaturan variabel lingkungan GST_PLUGIN_PATH”.
Kesalahan: Tidak dapat membuka file objek bersama: Tidak ada file atau direktori seperti itu
Jika Anda mengalami kesalahanCannot open shared object file: No such file or directory, jalankan perintah berikut:
gst-inspect-1.0 /path/to/libgstkvssink.so
Jika Anda menerima output berikut, ini menunjukkan bahwa linker dinamis tidak dapat menemukan pustaka yang diperlukan untukkvssink. Hal ini biasanya terjadi karena:
P
kvssinkindah ke lokasi yang berbeda dari tempat ia dibangun.Cross-compiling untuk arsitektur CPU yang salah.
Ketergantungan yang diperlukan tidak ada.
Output:
WARNING: erroneous pipeline: no element "kvssink" error while loading shared libraries: libcproducer.so: cannot open shared object file: No such file or directory
Resolusi:
Untuk perpustakaan yang dipindahkan, tambahkan direktori yang berisi pustaka yang hilang keLD_LIBRARY_PATH.
Dari direktori root repositori asli, Anda dapat menemukan perpustakaan yang hilang menggunakan find utilitas. Di terminal, ketik:
find . -name "*libcproducer*"
Output:
./build/dependency/libkvscproducer/kvscproducer-src/libcproducer.so
Pemisah jalur file pada perangkat Linux adalah:. Perintah di bawah ini menambahkan jalur folder baru ke variabel LD_LIBRARY_PATH lingkungan yang ada, mempertahankan nilai sebelumnya.
Di terminal Anda, ketik:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/build/dependency/libkvscproducer/kvscproducer-src
penting
Variabel lingkungan bersifat spesifik sesi. Untuk mempertahankan perubahan di seluruh sesi, ubah skrip startup shell Anda.
Anda mungkin juga perlu menambahkan open-source/local/lib ke Anda$LD_LIBRARY_PATH.
Kesalahan:. /path/to/libcproducer.so.1: header ELF tidak valid
Jika Anda menerima kesalahan ini saat memuat pust aka bersama, itu mungkin karena tautan simbolik rusak (symlinks). Symlink dapat rusak jika sistem operasi mesin host tidak cocok dengan mesin target. Misalnya, kompilasi silang pada a MacBook untuk Raspberry Pi.
Kemungkinan penyebab lain adalah bahwa binari yang dibangun adalah untuk arsitektur yang salah. Misalnya, jika binari dibangun untuk x86 (Raspberry Pi menggunakan CPU ARM).
Arahkan ke lokasi perpustakaan yang ditentukan dalam kesalahan dan ketik: ls
-la untuk memeriksa perpustakaansymlinks.
Tanggapan:
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
Pada output sampel di atas, symlinks tidak rusak. Rusak symlinks tidak akan memiliki panah yang menunjuk ke target mereka.
Resolusi:
Ada dua opsi untuk memperbaiki symlink:
-
Direkom endasikan: Buat ulang
symlinkdenganlnperintah. Jenis:ln -s /path/to/actual/library /path/to/symlink -
Salin file pustaka yang sebenarnya dan ganti namanya agar sesuai dengan
symlink.catatan
Opsi ini mengarah pada peningkatan penggunaan penyimpanan.
Sebagai praktik terbaik, kompilasi pada sistem operasi yang sama menggunakan alat seperti Docker untuk menghindari masalah kompilasi silang.
Ketergantungan yang hilang:
Jika nama pustaka yang hilang dimulai denganlibkvs, lihat bagian untuk “pustaka yang dipindahkan” di atas untuk menginstal pustaka Kinesis Video Streams dari perangkat host ke perangkat target.
Jika tidak, ikuti Instal prasyarat perangkat lunak untuk memastikan semua prasyarat perangkat lunak sumber terbuka diinstal pada perangkat target.