上次解決了編譯ffplay異常的問題
這次要將ffmpeg的庫用起來,不過編譯動態庫的時候遇到了點問題:
relocation R_X86_64_32 against `a local symbol’ can not be used when making a shared object; recompile with -fPIC
由於上次使用./configure默認配置,裏面只編譯了.a靜態文件(可通過 ./configure --help 看到)。所以先把.so動態庫也編譯了。
推薦一開始配置./configure文件的時候就添加設置 --enable-shared。如:./configure --enable-shared --enable-ffplay
sudo make clean //清除掉上一章編譯的內容後重新安裝
./configure --enable-shared --enable-ffplay
sudo make
sudo make install
否則先編譯靜態庫之後再添加動態庫的編譯會出現上面的錯誤:
是由於,只進行靜態編譯./configure生成的編譯配置信息不會生成 -fPIC配置
解決:
可參考:https://blog.csdn.net/ssf1987/article/details/81118631
由於ffmpeg-3.4.2/使用gcc來編譯靜態依賴庫,編譯的中間文件都保存在了ffmpeg-3.4.2/ffbuild下面,所以需要進去編輯 config.mak。
1、修改配置信息中,使用gcc、g++編譯器時的配置項:
在文件裏的CFLAGS= 還有CPPFLAGS=之後增加 -fPIC。 之後編譯
sudo make
sudo make install
或者使用方法2,則不需要進去修改配置項,臨時修改CFLAGS變量:
2、
CFLAGS="-O3 -fPIC" ./configure --enable-shared
sudo make
sudo make install
之後就可以在你配置安裝的目錄下看到動態鏈接庫了
下一章就可以把ffmpeg用起來了