在新公司工作第四天,依然要編譯FFmpeg,不同的是難度大了,以前遇到什么參數編譯不過的,就去掉,因為不是專業做視頻的,但是新公司繞不過了。
編譯FFmpeg動態庫的時候發現鏈接某些靜態庫的時候會報錯:
relocation R_X86_64_32S against `cmnMemAlloc' can not be used when making a shared object; recompile with -fPIC
基礎不扎實,不知道make的時候還可以添加參數,查了很多資料,最后從一個回答中試出解決方案:
再編譯存在問題的庫時,調用“make”命令的時候,添加“CFLAGS='-fpic'”參數,就可以了。
舉個栗子:
我編譯FFmpeg時報這樣的錯:
/usr/bin/ld: /usr/local/lib/libvo-amrwbenc.a(wrapper.o): relocation R_X86_64_32S against `cmnMemAlloc' can not be used when making a shared object; recompile with -fPIC
意思是鏈接的“libvo-amrwbenc.a”庫需要添加“-fPIC”重新編譯,那我就在編譯“libvo-amrwbenc.a”時,調用
make CFLAGS='$CFLAGS -fpic'
有的./configure 時也有這樣的參數“CFLAGS”,也可以在這里添加
編譯動態庫要鏈接靜態庫才會出現這問題,編譯靜態庫鏈接靜態庫則不會
有個回答如是說: