【转】iOS lame编译 arm64 armv7s armv7 x86_64 i386指令集

原文出至 http://blog.csdn.net/vieri_ch/article/details/40650467

最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和iOS 8.1

之前app用到的libmp3lame.a静态库,也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集。需要重新编译

查阅了下资料,按照如下步骤,并做了些注释和改动

1.http://sourceforge.net/projects/lame/files/lame/3.99/ 下载lame的最新版本解压到一个文件夹里例如 lame,全路径如下/Users/8wm/Desktop/lame

2.下载build的脚本,我这里使用的是国外一个朋友的分享

https://github.com/kewlbear/lame-ios-build

下载之后得到lame-build.sh拷贝到文件夹/Users/8wm/Desktop/lame

3.用bbedit或者其他编辑器打开这个脚本,按照注释修改

4.打开Terminals,

输入

cd /Users/8wm/Desktop/lame

chmod 777 lame-build.sh

sudo -s#

输入系统密码

./lame-build.sh

开始编译,编译完成之后。生成fat-lame目录和thin-lame目录,分别存放合并所有指令集的静态库,以及各指令集的静态库.

根据所需,copy lame.h和libmp3lame.a文件到project里,就可以正常使用了。

可以使用命令行,查看换个库支持的指令集。

lipo -info libmp3lame.a

Architectures in the fat file: libmp3lame.a are: armv7 armv7s i386 x86_64 arm64

以下是build的脚本,请注意黄色的字和注释。

#!/bin/sh  

make distclean  

CONFIGURE_FLAGS="--disable-shared --disable-frontend"  

ARCHS="arm64 armv7s x86_64 i386 armv7"  

# directories
# SOURCE是下载lame源码包,解压后的目录,可以把sh脚本放到这个目录,source改为""
SOURCE=""
# FAT是所有指令集build后,输出的目录,所有静态库被合并成一个静态库
FAT="fat-lame"  

# SCRATCH是下载lame源码包,解压后的目录,必须是绝对路径
SCRATCH="/Users/8wm/Desktop/lame"
# must be an absolute path
# THIN 各自指令集build后输出的静态库所在的目录,每个指令集为一个静态库
THIN=`pwd`/"thin-lame"  

COMPILE="y"
LIPO="y"  

if [ "$*" ]
then
    if [ "$*" = "lipo" ]
    then
        # skip compile
        COMPILE=
    else
        ARCHS="$*"
        if [ $# -eq 1 ]
        then
            # skip lipo
            LIPO=
        fi
    fi
fi  

if [ "$COMPILE" ]
then
    CWD=`pwd`
    echo "$CWD/$SOURCE........."
    for ARCH in $ARCHS
    do
        echo "building $ARCH..."
        mkdir -p "$SCRATCH/$ARCH"
        cd "$SCRATCH/$ARCH"  

        if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]
        then
            PLATFORM="iPhoneSimulator"
            if [ "$ARCH" = "x86_64" ]
            then
                SIMULATOR="-mios-simulator-version-min=7.0"
                        HOST=x86_64-apple-darwin
            else
                SIMULATOR="-mios-simulator-version-min=5.0"
                        HOST=i386-apple-darwin
            fi
        else
            PLATFORM="iPhoneOS"
            SIMULATOR=
                    HOST=arm-apple-darwin
        fi  

        XCRUN_SDK=`echo $PLATFORM | tr ‘[:upper:]‘ ‘[:lower:]‘`
        CC="xcrun -sdk $XCRUN_SDK clang -arch $ARCH"
        #AS="$CWD/$SOURCE/extras/gas-preprocessor.pl $CC"
        CFLAGS="-arch $ARCH $SIMULATOR"
        CXXFLAGS="$CFLAGS"
        LDFLAGS="$CFLAGS"  

        CC=$CC $CWD/$SOURCE/configure \
            $CONFIGURE_FLAGS \
                    --host=$HOST \
            --prefix="$THIN/$ARCH" \
                    CC="$CC" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS"  

        make -j3 install
        cd $CWD
    done
fi  

if [ "$LIPO" ]
then
    echo "building fat binaries..."
    mkdir -p $FAT/lib
    set - $ARCHS
    CWD=`pwd`
    cd $THIN/$1/lib
    for LIB in *.a
    do
        cd $CWD
        lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB
    done  

    cd $CWD
    cp -rf $THIN/$1/include $FAT
fi
时间: 2024-09-28 17:10:55

【转】iOS lame编译 arm64 armv7s armv7 x86_64 i386指令集的相关文章

Mac OS X10.10_xcode6.1_ios8.1环境下,编译lame静态库libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令集

最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和iOS 8.1之前app用到的libmp3lame.a静态库,也要支持64位的模拟器(x86_64)和64位的真机(arm64)指令集.需要重新编译查阅了下资料,按照如下步骤,并做了些注释和改动 1.http://sourceforge.net/projects/lame/files/lame/3.99/ 下载lame的最新版本解压到一个文件夹里例如 lame,全路径如下/Users/8wm/Desktop/lame 2.

iOS中的armv6、armv7、armv7s

armv6.armv7.armv7s是arm CPU的指令集,原则上是向下兼容的,如:iPhone4sCPU支持armv7,但它会兼容armv6,只是使用armv6指令可能无法充分发挥它的特性.iphone5CPU支持armv7s,它也会兼容armv7. 如果引用到第三方的库,以前在iphone4s下编译没有问题,但是换成iphone5之后,提示: Undefined symbols for architecture armv7s:  "_OBJC_CLASS_$_AMapView",

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)

问题: 解决: Project ->Target->Build Setting ->搜索 Build Active Architecture Only ->把值改成NO No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s)

iOS: FFmpeg编译和使用问题总结 ( 一 )

一片枫叶 追求卓越,成功就会在不经意间追上你 跟随自己的节奏学习,思考,总结,找到自己,别人才会找到你 下一篇:基于NSBundle的工程结构 iOS: FFMpeg编译和使用问题总结 iOS: FFmpeg编译和使用问题总结 折磨了我近一周多时间的FFmpeg库编译问题终于解决了,必须得把这一段时间来遇到过的坑全写出来.如果急着解决问题,编译最新版本的FFmpeg库请直接看第二部分,编译较老版本(0.7)的FFmpeg库请直接跳至第七部分,那里有你想要的编译脚本,但别忘了抽空看看全文. 一.背

ios下编译opencv

如果想要在ios下编译opencv 需要安装Cmake 这里通过homebrew 来安装cmake ios下打开终端然后先安装 homebrew :(mac 下自带ruby) ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 然后安装Cmake: brew install cmake 装好cmake之后就可以使用git 下载opencv 源码了具体操作如下:

【IOS】Undefined symbols for architecture x86_64

[IOS]Undefined symbols for architecture x86_64 先说一下这个问题的出现原因,字面意思就是某个符号不识别.一般问题都是由于引入了手动引入了某个lib,但是没有设置相应的编译选项或者没有引入其依赖的lib. 解决方法: 通过cocoapods引入lib,这样一般没有什么问题. 仔细查看文档,看看有什么依赖的lib没有引入,引入即可,或者加入相应的编译选项. 大体上就是上面两种,而且都很泛泛,下面说一下我遇到的具体问题. 开发环境:xcode 6.3.1

如何把iOS代码编译为Android应用

新闻 <iPhone 6/6 Plus中国销量曝光:单月销量650万>:据iSuppli Corp.中国研究总监王阳爆料,iPhone 6和iPhone 6 Plus在国内受欢迎的情况大大超过预期,苹果在中国的单月销量在11月超过了650万台,全年在中国的销量将超过4000万台. 教程 < Date parsing performance on iOS>:文章介绍了一个关于格式化时间的”黑科技“,作者使用 sqlite 替换 NSDateFormatter,提高了16倍的转换效率.

iOS下编译ffmpeg

网络上搜索“ios ffmpeg 编译”,文章一大把,但我编译还是费了很大的功夫才编译成功.很多文章只是把步骤列了出来,但是每个人的系统环境,或者程序版本都不一样,结果出现各种的错误.我把自己编译过程中碰到错误以及解决办法写出来,希望有需要的朋友少走弯路. 1.下载ffmpegc-master包 ffmpegc-master github链接:https://github.com/lvjian700/ffmpegc 包里面已经包含了install-gas.sh和install-ffmpeg.sh

转载:ios程序编译链接参数 all_load 的 ld duplicate symbol _main 的 bug及修复

转载自:http://www.cnblogs.com/dabaopku/archive/2012/12/12/2813940.html ios程序编译链接参数 all_load 的 ld duplicate symbol _main 的 bug及修复 问题 -all_load 是在Objective-C 编译时常用到的一个参数,比如这篇文章所介绍的,生成静态库的一些问题-all_load.但是我们在加入这个参数后,有时会出现"ld: duplicate symbol _main"的错误