首页 > 代码库 > libyuv编译(各平台)【转】

libyuv编译(各平台)【转】

转自:http://blog.csdn.net/wszawsz33/article/details/51669719

目录(?)[-]

  1. Getting Started
    1. Pre-requisites
    2. Getting the Code
      1. Android
    3. Building the Library and Unittests
      1. Windows
        1. Building with clangcl
      2. OSX
      3. iOS
      4. Android
        1. Building with GN
      5. Building Offical with GN
      6. Linux
        1. CentOS
      7. Windows Shared Library
      8. Build targets
    4. Building the Library with make
      1. Linux
    5. Building the Library with cmake
      1. Windows 8 Phone
      2. Windows Shared Library
      3. 64 bit Windows
      4. ARM Linux
    6. Running Unittests
      1. Windows
      2. OSX
      3. Linux
    7. CPU Emulator tools
      1. Intel SDE Software Development Emulator
    8. Memory tools
      1. Running Dr Memory memcheck for Windows
      2. Running UBSan
      3. Running Valgrind memcheck
      4. Running Thread Sanitizer TSan
      5. Running Address Sanitizer ASan
    9. Benchmarking
      1. Windows
      2. Linux and Mac
    10. Making a change

最近用到视频格式转码,发现谷歌的开源库 libyuv 很好用,所以记录下编译过程

直接贴 官网的编译流程

https://chromium.googlesource.com/libyuv/libyuv/+/master/docs/getting_started.md

不过我得吐槽一下,我特么就想编译个libyuv 你特么非要让我把chrome项目check 下来是几个意思。。。。如果没猜错 应该是好几个g

Getting Started

How to get and build the libyuv code.

Pre-requisites

You‘ll need to have depot tools installed: https://www.chromium.org/developers/how-tos/install-depot-tools Refer to chromium instructions for each platform for other prerequisites.

说明:依赖工具,谷歌的这套东西还是比较好用的,首先要安装depottools 这点不多说,命令行就行,最重要的是在下载完成之后要有

export PATH=`pwd`/depot_tools:"$PATH" 命令使能这个工具

Getting the Code

Create a working directory, enter it, and run:

说明:设置与同步代码,里面自带脚本,关于代码如何同步的就无需关心了。

 


Then you‘ll get a .gclient file like:

solutions = [  { "name"        : "libyuv",    "url"         : "https://chromium.googlesource.com/libyuv/libyuv",    "deps_file"   : "DEPS",    "managed"     : True,    "custom_deps" : {    },    "safesync_url": "",  },];

For iOS add ios‘]; to your OSX .gclient and run  Browse the Git reprository: https://chromium.googlesource.com/libyuv/libyuv/+/master

Android

For Android add android‘]; to your Linux .gclient

solutions = [  { "name"        : "libyuv",    "url"         : "https://chromium.googlesource.com/libyuv/libyuv",    "deps_file"   : "DEPS",    "managed"     : True,    "custom_deps" : {    },    "safesync_url": "",  },];target_os = ["android", "unix"];

Then run:

Caveat: Theres an error with Google Play services updates. If you get the error “Your version of the Google Play services library is not up to date”, run the following: cd chromium/src ./build/android/play_services/update.py download cd ../..

 

For Windows the gclient sync must be done from an Administrator command prompt.

The sync will generate native build files for your environment using gyp (Windows: Visual Studio, OSX: XCode, linux: make). This generation can also be forced manually:  To get just the source (not buildable): git clone https://chromium.googlesource.com/libyuv/libyuv

Building the Library and Unittests

Windows

Building with clangcl
OSX

Clang 64 bit shown. Remove clang=1 for GCC and change x64 to ia32 for 32 bit.

iOS

http://www.chromium.org/developers/how-tos/build-instructions-ios

Add to .gclient last line: target_os=[‘ios‘];

armv7

arm64

 

both armv7 and arm64 (fat)

 

simulator

 

Android

https://code.google.com/p/chromium/wiki/AndroidBuildInstructions

Add to .gclient last line: target_os=[‘android‘];

armv7

arm64

 

ia32

 

mipsel

 

arm32 disassembly:

 

arm64 disassembly:

 

Running tests:

 

Running test as benchmark:

 

Running test with C code:

 

Building with GN
Building Offical with GN
Linux
CentOS

On CentOS 32 bit the following work around allows a sync:

Windows Shared Library

Modify libyuv.gyp from ‘static_library’ to ‘shared_library’, and add ‘LIBYUV_BUILDING_SHARED_LIBRARY’ to ‘defines’.

After this command follow the building the library instructions above.

 

If you get a compile error for atlthunk.lib on Windows, read http://www.chromium.org/developers/how-tos/build-instructions-windows

Build targets

Building the Library with make

Linux

Building the Library with cmake

Install cmake: http://www.cmake.org/

Default debug build:

Release build/install

 

Windows 8 Phone

Pre-requisite:

  • Install Visual Studio 2012 and Arm to your environment.

Then:

or with Visual Studio 2013:

 

Windows Shared Library

Modify libyuv.gyp from ‘static_library’ to ‘shared_library’, and add ‘LIBYUV_BUILDING_SHARED_LIBRARY’ to ‘defines’. Then run this.

After this command follow the building the library instructions above.

 

If you get a compile error for atlthunk.lib on Windows, read http://www.chromium.org/developers/how-tos/build-instructions-windows

64 bit Windows

ARM Linux
export GYP_DEFINES="target_arch=arm"export CROSSTOOL=`<path>`/arm-none-linux-gnueabiexport CXX=$CROSSTOOL-g++export CC=$CROSSTOOL-gccexport AR=$CROSSTOOL-arexport AS=$CROSSTOOL-asexport RANLIB=$CROSSTOOL-ranlibgclient runhooks

Running Unittests

Windows

OSX
Linux
Replace --gtest_filter=“*” with specific unittest to run. May include wildcards. e.g.

 

CPU Emulator tools

Intel SDE (Software Development Emulator)

Pre-requisite: Install IntelSDE for Windows: http://software.intel.com/en-us/articles/intel-software-development-emulator

Then run:

Memory tools

Running Dr Memory memcheck for Windows

Pre-requisite: Install Dr Memory for Windows and add it to your path: http://www.drmemory.org/docs/page_install_windows.html

Running UBSan

See Chromium instructions for sanitizers: https://www.chromium.org/developers/testing/undefinedbehaviorsanitizer

Sanitizers available: TSan, MSan, ASan, UBSan, LSan

Running Valgrind memcheck

Memory errors and race conditions can be found by running tests under special memory tools. [Valgrind] 1 is an instrumentation framework for building dynamic analysis tools. Various tests and profilers are built upon it to find memory handling errors and memory leaks, for instance.

Then run:

 

For more information, see http://www.chromium.org/developers/how-tos/using-valgrind

 

Running Thread Sanitizer (TSan)

For more info, see http://www.chromium.org/developers/how-tos/using-valgrind/threadsanitizer

 

Running Address Sanitizer (ASan)

For more info, see http://dev.chromium.org/developers/testing/addresssanitizer

 

Benchmarking

The unittests can be used to benchmark.

Windows

Linux and Mac
Indicates 0.547 ms/frame for 1280 x 720.

 

Making a change

gclient syncgit checkout -b mycl -t origin/mastergit pull<edit files>git add -ugit commit -m "my change"git cl lintgit cl trygit cl upload -r a-reviewer@chomium.org -s<once approved..>git cl land

libyuv编译(各平台)【转】