在從源碼編譯 FFmpeg 時,./configure 階段經常報錯「找不到庫文件」。這通常只有兩個原因:
第一個問題通過包管理器(apt、yum、brew 等)安裝對應的 -dev/-devel 包即可解決。重點是第二個問題:如何讓 FFmpeg 找到自定義安裝路徑下的庫?
--extra-cflags 與 --extra-ldflags在執行 ./configure 時加入以下兩個參數,分別指定頭文件搜索路徑(-I)與庫文件搜索路徑(-L):
./configure \
--extra-cflags="-I/usr/local/include" \
--extra-ldflags="-L/usr/local/lib" \
...其他選項...
--extra-cflags:傳遞給 C 編譯器的額外標誌,**路徑前必須加 -I**;--extra-ldflags:傳遞給鏈接器的額外標誌,**路徑前必須加 -L**;/opt/ffmpeg_deps),請相應修改路徑。假設你在 /home/user/ffmpeg_build 下自行編譯安裝了 x264、fdk-aac 等依賴:
./configure \
--prefix=/home/user/ffmpeg_build \
--extra-cflags="-I/home/user/ffmpeg_build/include" \
--extra-ldflags="-L/home/user/ffmpeg_build/lib" \
--enable-gpl --enable-libx264 --enable-libfdk-aac \
--enable-nonfree
這套 -I/-L 機制不僅適用於 FFmpeg,**所有基於 Autotools/CMake 的開源項目**在交叉編譯或使用非系統默認路徑的依賴時,均可通過類似方式(CFLAGS/LDFLAGS 環境變量或 configure 參數)指定搜索路徑。
避坑提示:若仍報錯,請檢查
config.log中的具體錯誤信息,確認頭文件是否真實存在於-I指定目錄,庫文件名稱是否為libxxx.a或libxxx.so格式。