使用ffmpeg 編譯時出錯:「在製作共享物件時,不能使用針對'本地符號'的重定位R_ARM_MOVW_ABS_NC;使用-fPIC 重新編譯」
嘗試在ARM Ubuntu 系統上重新安裝ffmpeg 時,在使用利用ffmpeg 函式庫的程式時遇到編譯錯誤。錯誤訊息指出:
/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
此錯誤是由於嘗試將靜態庫 (.a) 與動態庫 (.so) 連結而引起的。要解決此問題,需要使用 -fPIC 標誌重新編譯 ffmpeg。
使用 -fPIC 重新編譯
在 ./ 期間新增 --enable-shared 標誌configure 將指示 ffmpeg 建置為動態函式庫。或者,如果您願意,您可以選擇完全停用靜態庫。
使用 -fPIC 重新編譯 ffmpeg 函式庫後,編譯應該會成功進行,不會出現上述錯誤。
以上是為什麼我在編譯 ffmpeg 時出現「在製作共享物件時無法使用針對『本地符號』的重定位 R_ARM_MOVW_ABS_NC」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!