lame 靜態庫編譯

2021-08-01 11:42:38 字數 2918 閱讀 2048

最近公升級了系統到mac os x 10.10 並且更新了xcode6.1和ios 8.1

查閱了下資料,按照如下步驟,並做了些注釋和改動

/users/8wm/desktop/lame

3.用bbedit或者其他編輯器開啟這個指令碼

,按照注釋修改

4.開啟terminals,

輸入cd

/users/8wm/desktop/lame

chmod lame-build.sh

sudo -s#

輸入系統密碼

./lame-build.sh

開始編譯,編譯完成之後。生成fat-lame目錄和thin-lame目錄,分別存放合併所有指令集的靜態庫,以及各指令集的靜態庫.

根據所需,copy lame.h和

lib***lame.a檔案到

project裡,就可以正常使用了。

可以使用命令列,檢視換個庫支援的指令集。

lipo -info lib***lame.a

architectures in the fat file: lib***lame.a are: armv7 armv7s i386 x86_64 arm64

以下是build的指令碼,請注意黃色的字和注釋。

[plain]view plain

copy

#!/bin/sh  

make distclean  

configure_flags="--disable-shared --disable-frontend"  

archs="arm64 armv7s x86_64 i386 armv7"  

# directories  

source=""  

# fat是所有指令集build後,輸出的目錄,所有靜態庫被合併成乙個靜態庫  

fat="fat-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"  

else  

simulator="-mios-simulator-version-min=5.0"  

fi  

else  

platform="iphoneos"  

simulator=  

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  

編譯靜態庫編譯動態庫

編譯靜態庫 cr標誌告訴ar將object檔案封裝 archive 我們可以使用nm s 命令來檢視.a檔案的內容 ar cr libmyhello.a hello.o 或 cvr 編譯動態庫 gcc c fpic test1.c gcc c fpic test2.c fpic告訴gcc將源 編譯成...

Qt編譯生成靜態庫(靜態編譯)

開發環境 vs2008 qt4.8.4原始碼庫 其他環境請自己嘗試,原理應該是差不多的 qt編譯生成靜態庫1.本教程只針對在win32平台,使用vs開發工具 例子以vs2008為例 2.3.解壓qt源 到目標目錄,如 4.開啟 mkspecs 目錄,找到目標平台的資料夾,如 win32 msvc20...

靜態庫 a編譯和靜態庫 a合併

第一步 生成test.o目標檔案,使用gcc c test.c o test.o命令。第二步 使用ar將test.o打包成libtest.a靜態庫,使用ar rcs o libtest.a test.o命令 第三步 生成libtest.a靜態庫後,可以使用命令ar t libtest.a檢視libt...