您现在的位置是:首页 > 文章详情

libyuv编译(各平台)【转】

日期:2017-06-27点击:405

转自: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-gnueabi export CXX=$CROSSTOOL-g++ export CC=$CROSSTOOL-gcc export AR=$CROSSTOOL-ar export AS=$CROSSTOOL-as export RANLIB=$CROSSTOOL-ranlib gclient 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 sync git checkout -b mycl -t origin/master git pull <edit files> git add -u git commit -m "my change" git cl lint git cl try git cl upload -r a-reviewer@chomium.org -s <once approved..> git cl land
【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文链接:https://yq.aliyun.com/articles/374847
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章