组合静态库

我在这个问题中尝试了这种方法,但似乎ar的linux版本与mac版本不一样,因为我没有再次合并目标文件。

我基本上想要做的是通过运行脚本构建阶段将另一个静态库合并到我的Xcode静态库生成产品中。

不幸的是,我不能将其他库直接编译到我的项目中,因为它有自己的编译系统(因此我使用编译的库)。

我认为应该可以通过ar将其他库合并到Xcode生成的库中,而无需反编译构建产品。 我该如何做到这一点?


你可以使用libtool来做到这一点

libtool -static -o new.a old1.a old2.a

如果您正在处理多架构静态库,那么需要一些额外的操作来精简每个库,合并精简版本,然后增加结果。 这里有一个方便的脚本,您可以编辑它来满足您的需求,并且可以一次完成所有功能。 该示例使用三个iOS库path/to/source/libs/libone.apath/to/source/libs/libtwo.apath/to/source/libs/libthree.a ,并将它们合并到单个库libcombined.a

#! /bin/bash

INPATH="path/to/source/libs"

LIBPREFIX="lib"
LIBS="one two three"
LIBEXT=".a"

OUT="combined"

ARCHS="armv7 armv7s arm64"

for arch in $ARCHS
do
  for lib in $LIBS
  do
    lipo -extract $arch $INPATH/$LIBPREFIX$lib$LIBEXT -o $LIBPREFIX$lib-$arch$LIBEXT
  done
  INLIBS=`eval echo $LIBPREFIX{${LIBS// /,}}-$arch$LIBEXT`
  libtool -static -o $LIBPREFIX$OUT-$arch$LIBEXT $INLIBS
  rm $INLIBS
done

OUTLIBS=`eval echo $LIBPREFIX$OUT-{${ARCHS// /,}}$LIBEXT`
lipo -create $OUTLIBS -o $LIBPREFIX$OUT$LIBEXT
rm $OUTLIBS

你应该能够将一个链接到另一个链接。 所以...只需使用ld来合并图像。

链接地址: http://www.djcxy.com/p/67117.html

上一篇: Combine static libraries

下一篇: Version vs build in Xcode