最近项目里需要集成一个第三方库用于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