From f5c4671bfbad96bf346bd7e9a21fc4317b4959df Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Sat, 3 Dec 2022 17:00:20 +0530 Subject: Adds most of the tools --- ffmpeg/doc/platform.html | 395 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 395 insertions(+) create mode 100644 ffmpeg/doc/platform.html (limited to 'ffmpeg/doc/platform.html') diff --git a/ffmpeg/doc/platform.html b/ffmpeg/doc/platform.html new file mode 100644 index 0000000..bef326c --- /dev/null +++ b/ffmpeg/doc/platform.html @@ -0,0 +1,395 @@ + + + + + + + Platform Specific Information + + + + + + +
+

+ Platform Specific Information +

+
+
+ + + + +
+

Table of Contents

+ + +
+ + +

1 Unix-like

+ +

Some parts of FFmpeg cannot be built with version 2.15 of the GNU +assembler which is still provided by a few AMD64 distributions. To +make sure your compiler really uses the required version of gas +after a binutils upgrade, run: +

+
+
$(gcc -print-prog-name=as) --version
+
+ +

If not, then you should install a different compiler that has no +hard-coded path to gas. In the worst case pass --disable-asm +to configure. +

+ +

1.1 Advanced linking configuration

+ +

If you compiled FFmpeg libraries statically and you want to use them to +build your own shared library, you may need to force PIC support (with +--enable-pic during FFmpeg configure) and add the following option +to your project LDFLAGS: +

+
+
-Wl,-Bsymbolic
+
+ +

If your target platform requires position independent binaries, you should +pass the correct linking flag (e.g. -pie) to --extra-ldexeflags. +

+ +

1.2 BSD

+ +

BSD make will not build FFmpeg, you need to install and use GNU Make +(gmake). +

+ +

1.3 (Open)Solaris

+ +

GNU Make is required to build FFmpeg, so you have to invoke (gmake), +standard Solaris Make will not work. When building with a non-c99 front-end +(gcc, generic suncc) add either --extra-libs=/usr/lib/values-xpg6.o +or --extra-libs=/usr/lib/64/values-xpg6.o to the configure options +since the libc is not c99-compliant by default. The probes performed by +configure may raise an exception leading to the death of configure itself +due to a bug in the system shell. Simply invoke a different shell such as +bash directly to work around this: +

+
+
bash ./configure
+
+ + +

1.4 Darwin (Mac OS X, iPhone)

+ +

The toolchain provided with Xcode is sufficient to build the basic +unaccelerated code. +

+

Mac OS X on PowerPC or ARM (iPhone) requires a preprocessor from +https://github.com/FFmpeg/gas-preprocessor or +https://github.com/yuvi/gas-preprocessor(currently outdated) to build the optimized +assembly functions. Put the Perl script somewhere +in your PATH, FFmpeg’s configure will pick it up automatically. +

+

Mac OS X on amd64 and x86 requires nasm to build most of the +optimized assembly functions. Fink, +Gentoo Prefix, +Homebrew +or MacPorts can easily provide it. +

+ + +

2 DOS

+ +

Using a cross-compiler is preferred for various reasons. +http://www.delorie.com/howto/djgpp/linux-x-djgpp.html +

+ + +

3 OS/2

+ +

For information about compiling FFmpeg on OS/2 see +http://www.edm2.com/index.php/FFmpeg. +

+ + +

4 Windows

+ +

To get help and instructions for building FFmpeg under Windows, check out +the FFmpeg Windows Help Forum at http://ffmpeg.zeranoe.com/forum/. +

+ +

4.1 Native Windows compilation using MinGW or MinGW-w64

+ +

FFmpeg can be built to run natively on Windows using the MinGW-w64 +toolchain. Install the latest versions of MSYS2 and MinGW-w64 from +http://msys2.github.io/ and/or http://mingw-w64.sourceforge.net/. +You can find detailed installation instructions in the download section and +the FAQ. +

+

Notes: +

+ + + +

4.1.1 Native Windows compilation using MSYS2

+ +

The MSYS2 MinGW-w64 environment provides ready to use toolchains and dependencies +through pacman. +

+

Make sure to use mingw64_shell.bat or mingw32_shell.bat to have +the correct MinGW-w64 environment. The default install provides shortcuts to +them under MinGW-w64 Win64 Shell and MinGW-w64 Win32 Shell. +

+
+
# normal msys2 packages
+pacman -S make pkgconf diffutils
+
+# mingw-w64 packages and toolchains
+pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
+
+ +

To target 32 bits replace x86_64 with i686 in the command above. +

+ +

4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows

+ +

FFmpeg can be built with MSVC 2013 or later. +

+

You will need the following prerequisites: +

+ + +

To set up a proper environment in MSYS2, you need to run msys_shell.bat from +the Visual Studio or Intel Compiler command prompt. +

+

Place yasm.exe somewhere in your PATH. +

+

Next, make sure any other headers and libs you want to use, such as zlib, are +located in a spot that the compiler can see. Do so by modifying the LIB +and INCLUDE environment variables to include the Windows-style +paths to these directories. Alternatively, you can try to use the +--extra-cflags/--extra-ldflags configure options. +

+

Finally, run: +

+
+
For MSVC:
+./configure --toolchain=msvc
+
+For ICL:
+./configure --toolchain=icl
+
+make
+make install
+
+ +

If you wish to compile shared libraries, add --enable-shared to your +configure options. Note that due to the way MSVC and ICL handle DLL imports and +exports, you cannot compile static and shared libraries at the same time, and +enabling shared libraries will automatically disable the static ones. +

+

Notes: +

+ + + +

4.2.1 Linking to FFmpeg with Microsoft Visual C++

+ +

If you plan to link with MSVC-built static libraries, you will need +to make sure you have Runtime Library set to +Multi-threaded (/MT) in your project’s settings. +

+

You will need to define inline to something MSVC understands: +

+
#define inline __inline
+
+ +

Also note, that as stated in Microsoft Visual C++, you will need +an MSVC-compatible inttypes.h. +

+

If you plan on using import libraries created by dlltool, you must +set References to No (/OPT:NOREF) under the linker optimization +settings, otherwise the resulting binaries will fail during runtime. +This is not required when using import libraries generated by lib.exe. +This issue is reported upstream at +http://sourceware.org/bugzilla/show_bug.cgi?id=12633. +

+

To create import libraries that work with the /OPT:REF option +(which is enabled by default in Release mode), follow these steps: +

+
    +
  1. Open the Visual Studio Command Prompt. + +

    Alternatively, in a normal command line prompt, call vcvars32.bat +which sets up the environment variables for the Visual C++ tools +(the standard location for this file is something like +C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat). +

    +
  2. Enter the bin directory where the created LIB and DLL files +are stored. + +
  3. Generate new import libraries with lib.exe: + +
    +
    lib /machine:i386 /def:..\lib\foo-version.def  /out:foo.lib
    +
    + +

    Replace foo-version and foo with the respective library names. +

    +
+ + +

4.3 Cross compilation for Windows with Linux

+ +

You must use the MinGW cross compilation tools available at +http://www.mingw.org/. +

+

Then configure FFmpeg with the following options: +

+
./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
+
+

(you can change the cross-prefix according to the prefix chosen for the +MinGW tools). +

+

Then you can easily test FFmpeg with Wine. +

+ +

4.4 Compilation under Cygwin

+ +

Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack +llrint() in its C library. +

+

Install your Cygwin with all the "Base" packages, plus the +following "Devel" ones: +

+
binutils, gcc4-core, make, git, mingw-runtime, texinfo
+
+ +

In order to run FATE you will also need the following "Utils" packages: +

+
diffutils
+
+ +

If you want to build FFmpeg with additional libraries, download Cygwin +"Devel" packages for Ogg and Vorbis from any Cygwin packages repository: +

+
libogg-devel, libvorbis-devel
+
+ +

These library packages are only available from +Cygwin Ports: +

+
+
yasm, libSDL-devel, libgsm-devel, libmp3lame-devel,
+speex-devel, libtheora-devel, libxvidcore-devel
+
+ +

The recommendation for x264 is to build it from source, as it evolves too +quickly for Cygwin Ports to be up to date. +

+ +

4.5 Crosscompilation for Windows under Cygwin

+ +

With Cygwin you can create Windows binaries that do not need the cygwin1.dll. +

+

Just install your Cygwin as explained before, plus these additional +"Devel" packages: +

+
gcc-mingw-core, mingw-runtime, mingw-zlib
+
+ +

and add some special flags to your configure invocation. +

+

For a static build run +

+
./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
+
+ +

and for a build with shared libraries +

+
./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
+
+ +

+ This document was generated using makeinfo. +

+
+ + -- cgit v1.2.3