[FFmpeg-user] ffmpeg built static, yet "libopenjp2.so.7: cannot open shared object file"

Reindl Harald h.reindl at thelounge.net
Sun Aug 13 16:29:33 EEST 2017

Am 13.08.2017 um 15:19 schrieb tlum:
> On 8/13/2017 6:58 AM, Reindl Harald [via FFmpeg-users] wrote:
> Lets try and keep this topic on the topic of linking the static
> libopenjp2.a and away from religious dogma please.

you did not provide any useful informations how you built excatly

> Correct me if I'm mistaken, but AFAIK, ffmpeg does not maintain an
> srpm?. In any event, that would be tricky to do for static builds, given
> the licensing

what the hell has licensing with rpmbuild to do?

don't be silly - there is no legal differnce between let spit "make 
install" directly into the system or in the buildroot - licensing is all 
about distribution and what let you imagine that that case affects 
distribute your own self built package to your own servers - it's all 
about "can i distribute that package for other people"

> So that leaves us with guides like this one
> https://trac.ffmpeg.org/wiki/CompilationGuide/Centos .

no, that leaves you with "write a spec is not rocket science"

> Your constructive feedback is appreciated

just build and link the library proper, see example for x264 and that 
way i can install ffmpeg-libs from fedora-repos for software linked 
agianst it and my /usr/bin/ffmpeg is finally always the latest version 
for CLI

[builduser at testserver:/rpmbuild/SPECS]$ cat x264-latest.spec
%global            snapshot 20170629

Summary:           H264/AVC video encoder (static build)
Name:              x264-latest
Version:           0.152.2851
Release:           1%{?dist}
License:           GPLv2+
Group:             System Environment/Libraries
URL:               https://www.videolan.org/developers/x264.html
Source0:           x264-%{snapshot}.tar.xz
Source1:           x264-snapshot-latest.sh
BuildRequires:     yasm

x264 is a free library for encoding H264/AVC video streams, written from 

%setup -q -n x264-%{snapshot}

./configure \
  --prefix=%{_prefix}/local \
  --exec-prefix=%{_prefix}/local \
  --bindir=%{_prefix}/local/bin \
  --libdir=%{_prefix}/local/lib64 \
  --includedir=%{_prefix}/local/include \
  --extra-cflags="%{optflags} -Ofast -ffast-math 
-funsafe-math-optimizations -Wno-pointer-sign -minline-all-stringops 
-fno-strict-aliasing -flto -ffat-lto-objects -fuse-ld=gold 
-fuse-linker-plugin" \
  --extra-ldflags="-Wl,--as-needed -Wl,-z,now -Wl,-z,relro 
-Wl,-z,noexecstack %{optflags} -Ofast -ffast-math 
-funsafe-math-optimizations -Wno-pointer-sign -minline-all-stringops 
-fno-strict-aliasing -flto -ffat-lto-objects -fuse-ld=gold 
-fuse-linker-plugin" \
  --enable-lto \
  --enable-static \
  --enable-pic \
  --enable-strip \
  --disable-avs \
  --disable-cli \
  --disable-ffms \ 

  --disable-gpac \ 

  --disable-lavf \ 

  --disable-opencl \ 


%{__make} %{?_smp_mflags} 



make install DESTDIR=%{buildroot} 

rm -rf %{buildroot}%{_prefix}/local/bin/ 

rm -rf %{buildroot}%{_prefix}/local/lib64/pkgconfig/x264.pc 

mkdir %{buildroot}%{_prefix}/local/x264/ 

mv %{buildroot}%{_prefix}/local/lib64/libx264.a 
mv %{buildroot}%{_prefix}/local/include/x264.h 
mv %{buildroot}%{_prefix}/local/include/x264_config.h 
strip --strip-unneeded --strip-debug 


* Thu Jun 29 2017 Reindl Harald <h.reindl at thelounge.net>
- update to upstream snapshot 0.152.2851

[builduser at testserver:/rpmbuild/SPECS]$ cat ffmpeg-latest.spec
%global            snapshot 20170607

Summary:           Audio/Video-Encoder (static build)
Name:              ffmpeg-latest
Version:           3.3.2
Release:           1%{?dist}
License:           GPLv3+
Group:             Applications/Multimedia
URL:               http://ffmpeg.org/
Source0:           ffmpeg-%{snapshot}.tar.xz
Source1:           ffmpeg-snapshot-latest.sh
BuildRequires:     bzip2-devel
BuildRequires:     imlib2-devel
BuildRequires:     lame-devel
BuildRequires:     libtheora-devel
BuildRequires:     x264-latest
BuildRequires:     x265-devel
BuildRequires:     zlib-devel
BuildRequires:     libvpx-devel
BuildRequires:     openssl-devel
BuildRequires:     yasm
Provides:          ffmpeg
Obsoletes:         ffmpeg

FFMpeg is a complete and free Internet live audio and video broadcasting 
solution for Linux

%package           manpages
Group:             Manpages
Summary:           Manpages for ffmpeg-latest
BuildArch:         noarch
%description       manpages

%setup -q -n ffmpeg-%{snapshot}

mkdir generic
pushd generic
../configure \
  --prefix=%{_prefix}/local \
  --bindir=%{_prefix}/local/bin \
  --mandir=%{_prefix}/local/man \
  --extra-cflags="-I%{_prefix}/local/x264 %{optflags} -Ofast -ffast-math 
-funsafe-math-optimizations -Wno-pointer-sign -minline-all-stringops 
-fno-strict-aliasing -flto -fno-fat-lto-objects -fuse-ld=gold 
-fuse-linker-plugin -Wa,--noexecstack" \
  --extra-ldflags="-I%{_prefix}/local/x264 -L%{_prefix}/local/x264 -ldl 
-Wl,--as-needed -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack %{optflags} 
-Ofast -ffast-math -funsafe-math-optimizations -Wno-pointer-sign 
-minline-all-stringops -fno-strict-aliasing -flto -fno-fat-lto-objects 
-pie -fPIE -fuse-ld=gold -fuse-linker-plugin -Wa,--noexecstack" \
  --enable-lto \
  --ar=gcc-ar \
  --ranlib=true \
  --enable-nonfree \
  --enable-gpl \
  --enable-pic \
  --enable-version3 \
  --enable-libmp3lame \
  --enable-libtheora \
  --enable-libx264 \
  --enable-libx265 \
  --enable-libvpx \
  --enable-openssl \
  --enable-static \
  --enable-runtime-cpudetect \
  --disable-amd3dnow \
  --disable-amd3dnowext \
  --disable-avdevice \
  --disable-debug \
  --disable-devices \
  --disable-ffplay \
  --disable-ffprobe \
  --disable-ffserver \
  --disable-htmlpages \
  --disable-hwaccels \
  --disable-iconv \
  --disable-libdc1394 \
  --disable-libfreetype \
  --disable-libgsm \
  --disable-libopencore-amrnb \
  --disable-libopencore-amrwb \
  --disable-libopencv \
  --disable-libopenjpeg \
  --disable-libopus \
  --disable-librtmp \
  --disable-libschroedinger \
  --disable-libspeex \
  --disable-libvorbis \
  --disable-libxvid \
  --disable-podpages \
  --disable-postproc \
  --disable-protocol=gopher \
  --disable-shared \
%{__make} %{?_smp_mflags}
make documentation
mkdir -p %{buildroot}%{_prefix}/local/bin/
gcc -fPIC -fPIE -pie -Wl,-z,now -Wl,-z,relro,-z,noexecstack 
$CURRENT_DIR/tools/qt-faststart.c -o qt-faststart

pushd generic
make install DESTDIR=%{buildroot}
install -D -m0755 qt-faststart 
mkdir %{buildroot}%{_bindir}
ln -s %{_prefix}/local/bin/ffmpeg %{buildroot}%{_bindir}/ffmpeg
rm -rf %{buildroot}%{_prefix}/local/include 
%{buildroot}%{_prefix}/local/lib %{buildroot}%{_prefix}/local/lib64 
strip -s %{buildroot}%{_prefix}/local/bin/qt-faststart 


%files manpages

* Thu Jun 29 2017 Reindl Harald <h.reindl at thelounge.net>
- rebuild against x264 0.152.2851

More information about the ffmpeg-user mailing list