Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa saya mendapat ralat penempatan semula semasa menyusun dengan ffmpeg dan bagaimana saya boleh membetulkannya?

Mengapa saya mendapat ralat penempatan semula semasa menyusun dengan ffmpeg dan bagaimana saya boleh membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-11-08 04:21:01461semak imbas

Why do I get a relocation error when compiling with ffmpeg and how can I fix it?

Menyusun semula dengan -fPIC untuk Keserasian Pustaka Dikongsi

Apabila menyusun atur cara menggunakan perpustakaan, adalah penting untuk memastikan keserasian antara jenis perpustakaan dan kompilasi bendera. Satu senario sedemikian berlaku apabila menggunakan mesin ARM Ubuntu untuk memasang semula ffmpeg. Menyusun atur cara yang menggunakan perpustakaan ffmpeg mungkin mengakibatkan ralat berikut:

/usr/bin/ld: /usr/local/lib/libavcodec.a(amrnbdec.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

Ralat ini menunjukkan ketidakpadanan antara jenis pustaka dan bendera kompilasi. Bendera -fPIC biasanya digunakan semasa menyusun kod yang akan disertakan dalam pustaka kongsi (.so). Walau bagaimanapun, secara lalai, ffmpeg sering dihimpun ke dalam pustaka statik (.a).

Untuk menyelesaikan isu ini, anda mesti menyusun semula ffmpeg dengan bendera -fPIC. Ini boleh dicapai dengan mengubah suai pilihan kompilasi semasa mengkonfigurasi ffmpeg. Untuk berbuat demikian, tambahkan "--enable-shared" pada pilihan ./configure. Sebagai alternatif, anda boleh melumpuhkan perpustakaan kongsi sama sekali dengan menambahkan "--disable-shared" sebaliknya.

Setelah perubahan ini dibuat, penyusunan semula ffmpeg akan menghasilkan perpustakaan kongsi (.so) dan bukannya perpustakaan statik (.a ). Apabila anda menyusun atur cara anda yang menggunakan pustaka ffmpeg, ia akan berjaya memaut dengan pustaka kongsi, menyelesaikan ralat penempatan semula.

Atas ialah kandungan terperinci Mengapa saya mendapat ralat penempatan semula semasa menyusun dengan ffmpeg dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn