为了账号安全,请及时绑定邮箱和手机立即绑定

结合静态库

结合静态库

C
HUX布斯 2019-12-12 10:10:17
我在此问题中尝试了该方法,但ar由于无法再次合并目标文件,因此的linux版本似乎与mac版本不同。我基本上想要做的是通过运行脚本构建阶段将另一个静态库合并到我的Xcode静态库构建产品中。不幸的是,我无法将另一个库直接编译到我的项目中,因为它具有自己的构建系统(因此,我使用已编译的库)。我认为应该可以将其他库合并ar到Xcode生成的库中,而无需反编译生成产品。我该如何完成?
查看完整描述

3 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

你可以libtool用来做


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


查看完整回答
反对 回复 2019-12-13
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

如果要处理多体系结构静态库,则需要一些额外的操作来精简每个库,组合精简的版本,然后增加结果。这是一个方便的脚本,您可以对其进行编辑以满意的方式完成所有这些工作。这个例子有三个iOS的图书馆path/to/source/libs/libone.a,path/to/source/libs/libtwo.a以及path/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



查看完整回答
反对 回复 2019-12-13
?
慕斯王

TA贡献1864条经验 获得超2个赞

您应该用来ar -r在MacOS上创建档案:


ar -x libabc.a

ar -x libxyz.a

ar -r libaz.a  *.o


查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 343 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信