xcode中引入两个静态库冲突'duplicate symbol'的解决方法

    在开发过程中,可能需要引入第三方的静态库,有时候会出现duplicate symbol的错误。例如:duplicate symbol OBJC_METACLASS$_Reachability in:/你的xcode路径/DerivedData/iMove-cwhkpttlcvtnivfvakvpiakhvoak/Build/Products/Debug-iphoneos/libPods.a(Reachability.o)
/你的项目路径/libVParser.a(Reachability.o)

ld: 208 duplicate symbols for architecture armv7

clang: error: linker command failed with exit code 1 (use -v to see invocation)

    这里有个解决方法:如果静态库结构一样,可以将2个库合并或者将其中1个库中重复的.o文件删除。下面以删除libVParser.a重复的.o文件为例。打开终端。

1、、首先,查看文件结构

输入 lipo -info libVParser.a

结果
Architectures in the fat file: libVParser.a are: armv7 (cputype (12) cpusubtype (11))

2、将armv7解压出来

输入
lipo libVParser.a -thin armv7 -output libVParser-armv7.a

3、新建一个文件夹存放解压出来的.o文件

输入 mkdir armv7

输入 cd armv7

4、将静态库文件解压

输入
ar -x ../libVParser-armv7.a

5、删除重复的.o文件(如果是合并静态库的话,把另一个静态库按同样步骤解压。然后,对比,那些文件可以合并。)
6、删除(合并)完后,进行打包。

输入
libtool -static -o ../libnewVPaser.a *.o

此时,用新生成的静态库文件就可以正常编译了。