在使用静态库时出现重定义问题,不能控制静态库的生成,记录在这种情况下的处理。
multiple definition
出现重定义时,如果源码可控,这种情况下简单,修改源码即可。
当源码不可控时,需要考虑其他办法来处理这种问题。
- 直接修改
- 逆向工程
直接修改
使用 UE
打开存在重定义的 .a
文件,将相关的重定义符号修改为其他名字,必须保证修改前后长度一致!
逆向工程
nm查看库文件
nm -a libtest.a
解压静态库文件
ar -x libtest.a
此时当前目录存在 .o
文件
反汇编
objdump -D test.o > test.m
修改之后打包
ar -rcs libtest.a *.o
tips
查看库文件有那些目标文件
ar -t libtest.a
查看库文件索引表
ar -s libtest.a