Ralat Semasa Menyusun dengan ffmpeg: "Penempatan semula R_ARM_MOVW_ABS_NC terhadap `simbol tempatan' tidak boleh digunakan semasa membuat objek kongsi; susun semula dengan -fPIC"
Semasa cuba memasang semula ffmpeg pada sistem ARM Ubuntu, a ralat kompilasi ditemui apabila menggunakan program yang menggunakan perpustakaan ffmpeg. Mesej ralat ditunjukkan:
/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 timbul daripada percubaan untuk memautkan perpustakaan statik (.a) dengan perpustakaan dinamik (.so). Untuk menyelesaikan isu ini, adalah perlu untuk menyusun semula ffmpeg dengan bendera -fPIC.
Menyusun semula dengan -fPIC
Menambah bendera --enable-shared semasa ./ configure akan mengarahkan ffmpeg untuk membina sebagai perpustakaan dinamik. Sebagai alternatif, anda boleh memilih untuk melumpuhkan perpustakaan statik sepenuhnya jika lebih suka.
Setelah pustaka ffmpeg telah dikompilasi semula dengan -fPIC, kompilasi harus diteruskan dengan jayanya tanpa ralat yang disebutkan di atas.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'Relokasi R_ARM_MOVW_ABS_NC terhadap `simbol tempatan' tidak boleh digunakan semasa membuat objek kongsi' Ralat Semasa Menyusun ffmpeg?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!