我已从官方网站查看了最新的ffmpeg来源。我现在想要编译和构建ffmpeg作为位置无关的可执行文件。
这是我的configure命令的样子
./configure --prefix=/usr/local --enable-gpl --enable-pic --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
我添加了选项--enable-pic
以使其成为PIE。但是,当构建过程成功完成并且我按如下方式进行强化检查时,我得到以下输出
tough-check ffmpeg
ffmpeg:
Position Independent Executable: no, normal executable!
Stack protected: yes
Fortify Source functions: yes (some protected functions found)
Read-only relocations: yes
Immediate binding: no, not found!
这告诉我ffmpeg仍然不是PIE。有谁能告诉我,我在这里失踪了什么?是否需要进行任何其他更改以添加PIE支持。
答案 0 :(得分:2)
您需要在配置脚本中添加-fPIE和-pie选项到CFLAGS和LDFLAGS,如下所示:
./configure <other options> \
--extra-cflags="-I../x264 -mfloat-abi=softfp -mfpu=neon -fPIE -pie" \
--extra-ldflags="-L../x264 -fPIE -pie"
最新的脚本已经进行了这些更改。
答案 1 :(得分:0)
不要混淆PIE和PIC,特别是在你的参数中并将-pie传递给你的链接器选项 - PIC用于共享库而不是可执行文件