最近在升级licode的libav库,将它改为ffmpeg 4.2,方便以后的ffmpeg相关的扩展
编译ffmpeg 4.2的libavcodec库时出现如下报错:
/usr/bin/ld: libavcodec/mqc.o: relocation R_X86_64_32 against `.rodata’ can not be used when making a shared object; recompile with -fPIC
libavcodec/mqc.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
-fPIC:表示编译为位置独立的代码
找了很多加 -fPIC的地方,都没有效果。最后在ffmpeg-4.2/ffbuild下面,编辑 config.mak文件:
CPPFLAGS= -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -DZLIB_CONST
改成:
CPPFLAGS= -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -DZLIB_CONST
即解决问题。