转自:http://blog.csdn.net/cjj198561/article/details/38382889

编译准备

1.代码下载

在mac下面执行:wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz

也可以用网页打开下载,不过我用网页打开下载老是失败,后来就命令下载一次性成功。

2.代码编译

下载以后解压文件,解压以后的文件名修改为faac

3.写脚本文件

编写build-faac.sh文件,内容如下:

  1. #!/bin/sh
  2. CONFIGURE_FLAGS="--enable-static --with-pic"
  3. ARCHS="arm64 armv7s armv7 x86_64 i386"
  4. # directories
  5. SOURCE="faac"
  6. FAT="fat-faac"
  7. SCRATCH="scratch-faac"
  8. # must be an absolute path
  9. THIN=`pwd`/"thin-faac"
  10. COMPILE="y"
  11. LIPO="y"
  12. if [ "$*" ]
  13. then
  14. if [ "$*" = "lipo" ]
  15. then
  16. # skip compile
  17. COMPILE=
  18. else
  19. ARCHS="$*"
  20. if [ $# -eq 1 ]
  21. then
  22. # skip lipo
  23. LIPO=
  24. fi
  25. fi
  26. fi
  27. if [ "$COMPILE" ]
  28. then
  29. CWD=`pwd`
  30. for ARCH in $ARCHS
  31. do
  32. echo "building $ARCH..."
  33. mkdir -p "$SCRATCH/$ARCH"
  34. cd "$SCRATCH/$ARCH"
  35. if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]
  36. then
  37. PLATFORM="iPhoneSimulator"
  38. CPU=
  39. if [ "$ARCH" = "x86_64" ]
  40. then
  41. SIMULATOR="-mios-simulator-version-min=7.0"
  42. HOST=
  43. else
  44. SIMULATOR="-mios-simulator-version-min=5.0"
  45. HOST="--host=i386-apple-darwin"
  46. fi
  47. else
  48. PLATFORM="iPhoneOS"
  49. if [ $ARCH = "armv7s" ]
  50. then
  51. CPU="--cpu=swift"
  52. else
  53. CPU=
  54. fi
  55. SIMULATOR=
  56. HOST="--host=arm-apple-darwin"
  57. fi
  58. XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
  59. CC="xcrun -sdk $XCRUN_SDK clang -Wno-error=unused-command-line-argument-hard-error-in-future"
  60. AS="$CWD/$SOURCE/extras/gas-preprocessor.pl $CC"
  61. CFLAGS="-arch $ARCH $SIMULATOR"
  62. CXXFLAGS="$CFLAGS"
  63. LDFLAGS="$CFLAGS"
  64. CC=$CC CFLAGS=$CXXFLAGS LDFLAGS=$LDFLAGS CPPFLAGS=$CXXFLAGS CXX=$CC CXXFLAGS=$CXXFLAGS  $CWD/$SOURCE/configure \
  65. $CONFIGURE_FLAGS \
  66. $HOST \
  67. --prefix="$THIN/$ARCH" \
  68. --disable-shared \
  69. --without-mp4v2
  70. make clean && make && make install-strip
  71. cd $CWD
  72. done
  73. fi
  74. if [ "$LIPO" ]
  75. then
  76. echo "building fat binaries..."
  77. mkdir -p $FAT/lib
  78. set - $ARCHS
  79. CWD=`pwd`
  80. cd $THIN/$1/lib
  81. for LIB in *.a
  82. do
  83. cd $CWD
  84. lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB
  85. done
  86. cd $CWD
  87. cp -rf $THIN/$1/include $FAT
  88. fi

4.编译

为编写的文件增加执行权限

chmod +x build-faac.sh

然后执行脚本

./build-faac.sh

完成以后会生成如下目录,对应的库和头文件在fat-faac文件夹里面

fat-faac是thin-faac里面的各个平台合并以后的库和头文件

 

【转】交叉编译faac共享库的更多相关文章

  1. 交叉编译faac共享库

    作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 Advanced Audio Coding.一种专为声音数据设计的文件压缩格式,与Mp3不同,它採 ...

  2. Live555实战之交叉编译live555共享库

    作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 能够通过这个链接获得最新的live555源代码:Live555源代码下载 Live555 是一个为 ...

  3. Linux学习笔记——如何使用共享库交叉编译

    0.前言     在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如:     [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...

  4. Linux学习笔记——怎样在交叉编译时使用共享库

    0.前言     在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如:     [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...

  5. Android NDK 交叉编译C++代码生成.so共享库详细步骤

    Android NDK 交叉编译C++代码生成.so共享库详细步骤 Android NDK 调用c++ stl 模板库(修改android.mk文件) 1  在需要调用模板库的文件前包含头文件:   ...

  6. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

    目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...

  7. python调用c++/c 共享库,开发板上编译的一些坑!

    1.对于python,ctypes只能load动态库,但现在我的对象是一个静态库,而且我没有源代码,静态库在编译过程中没有加--fPIC参数,所以我也没办法将其编译为动态库,有没有什么方法在pytho ...

  8. 链接(extern、static关键词\头文件\静态库\共享库)

    原文链接:http://www.orlion.ga/781/ 一. 多目标文件的链接 假设有两个文件:stack.c: /* stack.c */ char stack[512]; int top = ...

  9. linux下共享库的注意点之-fpic

    在编译共享库必须加上-fpic.这是为什么呢? 首先看一个简单的例子: #include <stdio.h> int fun1() { printf("fun1\n") ...

随机推荐

  1. URL地址中的转义符

    如果在XML里面存储URL地址可能涉及到转义符的问题 WEB开发中通过问号(?)方式在浏览器地址栏中传值时.浏览器是通过“&”来区分问号后的参数个数的. 如果出现传值参数中带有“&”时 ...

  2. PHPnow升级PHP 5.4与Mysql 5.5

    本文转载自:https://www.dadclab.com/archives/5928.jiecao 折腾开始 1.安装一下VC9的运行库,下载地址:https://www.microsoft.com ...

  3. (转)Lambda表达式详解

    本文转载自:http://www.cnblogs.com/knowledgesea/p/3163725.html 前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸 ...

  4. android学习笔记25——事件处理Handler

    Handler消息传递机制 ==> android消息机制是另一种形式的“事件处理”,这种机制主要是为了解决android应用的多线程问题. ——android平台不允许Activity新启动的 ...

  5. leptus和cowboy之间某些库的转换

    在github上问作者,如何使用cookie,作者回复是,leptus是基于restful的框架,对于cookie和session的支持,建议转换为cowboy用,以下是转换方式 leptus_req ...

  6. Linux后台开发常用工具

    内存分析工具valgrind valgrind辅助工具qcachegrind 可视化查看valgrind结果 淘宝DBA团队发布的监控脚本,使用perl开发,可以完成对linux系统和MySql相关指 ...

  7. ACL权限设置使用

    acl操作 # 查看操作的分区支不支持acldumpe2fs -h /dev/sda2 | grep aclDefault mount options: user xattr acl 代表支持acl如 ...

  8. HTTP头域列表与解释 之 request篇

    HTTP 头域是HTTP协议中请求(request)和响应(response)中的头部信息,其实就是HTTP通信的操作参数,告诉web服务器和浏览器怎样处理这个通信.HTTP头从一个请求信息或者响应信 ...

  9. [运维-服务器 – 1A] – nginx.conf(转)

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  10. OpenCV中Delaunay三角网算法例子

    #include <opencv2/opencv.hpp> #include <vector> using namespace cv; using namespace std; ...