首頁 > 後端開發 > C++ > 主體

為什麼我在編譯 ffmpeg 時出現「在製作共享物件時無法使用針對『本地符號』的重定位 R_ARM_MOVW_ABS_NC」錯誤?

Barbara Streisand
發布: 2024-11-10 14:37:03
原創
442 人瀏覽過

Why Am I Getting

使用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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板