user9236: My target is to build a single static FFmpeg binary with libfdkaac and x264 support for OSX and Linux. First, I tried to build one on OSX, I follow the instruction on FFmpeg web:
https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX
Here is the configuration settings I applied to build a static binary:
./configure pkg_config='pkg-config --static' --prefix=/usr/local --extra-version=ntd_20150126 --disable-shared --enable-static --enable-gpl --enable-pthreads --enable-nonfree --enable-fontconfig --enable-libfreetype --enable-libass --enable-libfdk-aac  --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-filters --enable-runtime-cpudetect

After build process, FFmpeg is around 14Mb, which means that it doesn't include the third party libraries. In fact, it requires to link to dynamic libraries located at /usr/local/lib. If I removed those dynamic libs, the FFmpeg will show an error like:
dyld: Library not loaded: /usr/local/lib/libSDL-1.2.0.dylib
Referenced from: /usr/local/bin/ffmpeg
Reason: image not found
Trace/BPT trap: 5

Is it the right way to make all external libraries into single static binary?
I would be really appreciate for your help!

user13864: In my CentOS 5.11 and FFmpeg 3.0, I have to use options
--pkg-config-flags="--static"
--extra-cflags="-I$HOME/ffmpeg/include -static"
--extra-ldflags="-L$HOME/ffmpeg/lib -static"

--enable-static tell a complier to create the "static libraries" (libav*.a). We can be combine FFmpeg API in the other standalone (static) application.
--disable-shared tell a complier not to create the "dynamically linked shared object libraries" (libav*.so). These type of libraries can be load and use FFmpeg API by the other application.
These 2 options doesn't complie FFmpeg as standalone static executable.

user9236: Thanks for stib's suggestion. I leave my answer here.
FFmepg build process take higher priority to use dynamic library even if static libraries are ready. Therefore, I first removed some external libraries support from build configuration and make sure all external libraries are only static (remove *.dylib from prefix /usr/local/lib). Then rebuild it with the following command:
./configure --pkg-config-flags="--static" --libdir=/usr/local/lib --extra-version=ntd_20150128 --disable-shared --enable-static --enable-gpl --enable-pthreads --enable-nonfree  --enable-libass --enable-libfdk-aac  --enable-libmp3lame  --enable-libx264 --enable-filters --enable-runtime-cpudetect

Remember to define --pkg-config-flags="--static", asking build process to use static library. Then, we will get a single executable FFmpeg binary!
P.S.: I removed the libass support from the configuration, because libass depends on Fontconfig lib which I only have dynamic library available. I'll put the libass support back once I figured out how to make a static library of fontconfig.
Thanks.

9236: <p>My target is to build a single static FFmpeg binary with libfdkaac and x264 support for OSX and Linux. First, I tried to build one on OSX, I follow the instruction on FFmpeg web:
<a href="https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX" rel="noreferrer">https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX</a></p>

<p><strong>Here is the configuration settings I applied to build a static binary:</strong></p>

<pre><code>./configure pkg_config='pkg-config --static' --prefix=/usr/local --extra-version=ntd_20150126 --disable-shared --enable-static --enable-gpl --enable-pthreads --enable-nonfree --enable-fontconfig --enable-libfreetype --enable-libass --enable-libfdk-aac  --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-filters --enable-runtime-cpudetect
</code></pre>

<p>After build process, FFmpeg is around 14Mb, which means that it doesn't include the third party libraries. In fact, it requires to link to dynamic libraries located at <code>/usr/local/lib</code>. If I removed those dynamic libs, the FFmpeg will show an error like:</p>

<pre><code>dyld: Library not loaded: /usr/local/lib/libSDL-1.2.0.dylib
Referenced from: /usr/local/bin/ffmpeg
Reason: image not found
Trace/BPT trap: 5
</code></pre>

<p>Is it the right way to make all external libraries into single static binary?</p>

<p>I would be really appreciate for your help!</p>
 13864: <p>In my CentOS 5.11 and FFmpeg 3.0, I have to use options</p>

<pre><code>--pkg-config-flags="--static"
--extra-cflags="-I$HOME/ffmpeg/include -static"
--extra-ldflags="-L$HOME/ffmpeg/lib -static"
</code></pre>

<p><strong>--enable-static</strong> tell a complier to create the "static libraries" (libav*.a). We can be combine FFmpeg API in the other standalone (static) application.</p>

<p><strong>--disable-shared</strong> tell a complier not to create the "dynamically linked shared object libraries" (libav*.so). These type of libraries can be load and use FFmpeg API by the other application.</p>

<p>These 2 options doesn't complie FFmpeg as standalone static executable.</p>
 9236: <p>Thanks for stib's suggestion. I leave my answer here.</p>

<p>FFmepg build process take higher priority to use dynamic library even if static libraries are ready. Therefore, I first removed some external libraries support from build configuration and make sure all external libraries are only static (remove *.dylib from prefix /usr/local/lib). Then rebuild it with the following command:</p>

<pre><code>./configure --pkg-config-flags="--static" --libdir=/usr/local/lib --extra-version=ntd_20150128 --disable-shared --enable-static --enable-gpl --enable-pthreads --enable-nonfree  --enable-libass --enable-libfdk-aac  --enable-libmp3lame  --enable-libx264 --enable-filters --enable-runtime-cpudetect
</code></pre>

<p>Remember to define <code>--pkg-config-flags="--static"</code>, asking build process to use static library. Then, we will get a single executable FFmpeg binary!</p>

<p>P.S.: I removed the <strong>libass</strong> support from the configuration, because libass depends on Fontconfig lib which I only have dynamic library available. I'll put the libass support back once I figured out how to make a static library of fontconfig.</p>

<p>Thanks.</p>
