• Windows环境下使用cygwin ndk_r9c编译x264


     一、废话

    最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,下面是x264,网上说的很多都是几百年前的,我亲测完美可用

    还是那句话 我能力有限,但是我希望我写的东西能够让更多的人能够接受.我也是刚刚接触.做一个记录,也希望能够对其他人有好处.
    联系我可以直接评论,也可以加我QQ:2519687025

     二、干货 

     

      准备:1.x264的源码

    2.cygwin下载,安装,这个网上基本都有.我不讲太多.git cygdrive bash make 这几个都需要下载 

    3.ndk我现在的版本r9c.最新的现在应该到r9d了.需要的去更新问题不大的.而且注意设置环境变量

    我的设置如下: 因为下面的命令要用到,所以没设的就跟我设一样的就好,避免出现不必要的问题

    ANDROID_NDK_ROOT  E:android-ndk-r9c

    名字一样就好,路径还是你自己的.

    4.编译脚本.这个脚本自己去理解吧.我也是一知半解--脚本名称:Config.sh

    EXTRA_OPTIONS=()
    case $OS in
    Android)
        GNU_BUILD_OS=linux

        EXTRA_OPTIONS+=(
            --extra-cflags=-DANDROID
            --extra-cflags=-gdwarf-2
        )

        case $ARCH in
        armeabi-v7a*)
            GNU_BUILD_ARCH=armv7-a
            CROSSCOMPILE_PREFIX=arm-linux-androideabi-

            TARGET_ARCH=arm

            EXTRA_OPTIONS+=(
                --extra-cflags=-mfpu=vfpv3-d16
                --extra-cflags=-mcpu=cortex-a9
            )

            ;;
        esac

        case $ARCH in
        armeabi-v7a-hard)
            APP_PLATFORM=android-19

            EXTRA_OPTIONS+=(
                --libm="-lm_hard"
                --extra-cflags=-mhard-float
                --extra-cflags=-D_NDK_MATH_NO_SOFTFP=1
                --extra-ldflags=-Wl,--no-warn-mismatch
            )
            ;;
        armeabi-v7a)
            APP_PLATFORM=android-8
            ;;
        esac

        SYSROOT="${ANDROID_NDK_ROOT}/platforms/${APP_PLATFORM}/arch-${TARGET_ARCH}"
        ;;
    Windows)
        ;;
    Linux)
        ;;
    esac

    ${X264_SOURCE_DIR}/configure 
        --prefix=/ 
        --sysroot="$SYSROOT" 
        --cross-prefix="$CROSSCOMPILE_PREFIX" 
        --host=$GNU_BUILD_ARCH-$GNU_BUILD_OS 
        "${EXTRA_OPTIONS[@]}" 
        --disable-opencl 
        --enable-pic 
        --bit-depth=8 
        --chroma-format=420 
        --disable-interlaced 
        --enable-static 
        --disable-lavf 
        --disable-avs 
        --disable-swscale 
        

      三、编译

     1.export符号链接 --非常重要

      export CYGWIN="winsymlinks:nativestrict"
    2.cygwin的环境:
    ANDROID_NDK_ROOT=$(cygpath -u "$ANDROID_NDK_ROOT")
    ANDROID_ARM_TOOLCHAIN_ROOT=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/windows/
    ANDROID_X86_TOOLCHAIN_ROOT=$ANDROID_NDK_ROOT/toolchains/x86-4.8/prebuilt/windows
    export PATH=$PATH:$ANDROID_ARM_TOOLCHAIN_ROOT/bin:$ANDROID_X86_TOOLCHAIN_ROOT/bin
    3.执行一下命令,编译脚本
    TMP=$(cygpath -m "$TMP"
    ARCH=armeabi-v7a 
    OS=Android 
    ANDROID_NDK_ROOT=$(cygpath -m "$ANDROID_NDK_ROOT"
    X264_SOURCE_DIR=/cygdrive/e/soft/source/x264/x264 
    /cygdrive/e/qupai_code_eclipse/code/ThirdParty/Build/x264/Config.sh
    4.执行make命令 这里使用的是NDK的make,而不是cygwin的make
    "$ANDROID_NDK_ROOT/prebuilt/windows/bin/make" -j8  

     注意,里面有些是我自己的脚本的路径,需要自己去替换一下.如:

    X264_SOURCE_DIR=/cygdrive/e/soft/source/x264/x264            --------这是源码地址
         /cygdrive/e/qupai_code_eclipse/code/ThirdParty/Build/x264/Config.sh ------这是脚本地址
     

  • 相关阅读:
    [原]three.js 地形法向量生成
    C# 创建XML文档
    <转载>在C#中操作XML(基础操作)
    <转载>Visual C#.NetSocket篇
    <转载>批处理重定向中的秘密
    <转载>最基本的Socket编程C#版
    <转载>在.NET中运行外部程序的3种方法
    <转载>修改Win7远程桌面端口
    <转载>Visual C#.NetTCP篇
    <转载>C#中的委托和事件(续)
  • 原文地址:https://www.cnblogs.com/shansheng/p/3900034.html
Copyright © 2020-2023  润新知