最近在升级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
即解决问题。

在升级licode的libav库至ffmpeg 4.2过程中遇到编译错误,提示需要重新编译使用-fPIC选项。通过在ffmpeg-4.2/ffbuild/config.mak文件中修改CPPFLAGS添加-fPIC选项,成功解决了这个问题,允许编译为位置独立的代码。
1377

被折叠的 条评论
为什么被折叠?



