静态库去除ARM库解决Multiple definition错误

最近项目里需要集成一个第三方库用于AEC,第三方库用到了ARM的CMSIS DSP库,APP中导入静态库后,由于APP本身也有ARM库,导致出现'Multiple definition'的错误,所以需要去掉第三方库中的ARM库

假设库的名称是libthirdparty.a,首先将.a中包含的.o文件解压出来,使用ar指令

$ ar -x libthirdparty.a
$ ls
...
arm_add_f32.o                       arm_copy_f32.o
arm_biquad_cascade_df2T_f32.o       arm_fill_f32.o
arm_biquad_cascade_df2T_init_f32.o  arm_float_to_q15.o
arm_bitreversal2.o                  arm_mult_f32.o
arm_cfft_f32.o                      arm_offset_f32.o
...

可以看到其中arm前缀的.o文件,就是ARM的CMSIS DSP库了,把这些库和原来的.a文件都删了

$ rm arm* libthirdparty.a

再把剩下的.o文件重新打包成静态库即可

$ ar -rcs ./libthirdparty.a *.o

发表回复

电子邮件地址不会被公开。必填项已用 * 标注