Использую две библиотеки, самостоятельно собранные из исходников (исходники доступны): libcelt.a и libspeexdsp.a
В обоих библиотеках есть модули - kiss_fft.c, функции которых отличаются: libcelt использует свой набор функций из своего модуля kiff_fft.c, а libspeex - соответственно свои.
Объединить kiss_fft.c - не вариант: слишком разные реализации.
При статической линковке я указываю соответственно -lcelt и -lspeexdsp. В итоге рождается нерабочий код, улетающий в исключение. Виной тому: линковщик берёт одну реализацию функций из одного модуля kiss_fft.c и применяет его к обоим библиотекам.
Пока решил проблему - переименованием дублей функций во всех исходниках libspeex. Читал ещё про смену перфикса через objdump, но это муторно - нужно переправлять все хедеры функциям.
Вопрос: как решить проблему более красиво? Надо чтобы функции в библиотеках работали только в пределах самой библиотеки и не распостранялись на другие библиотеки. Они static. Тулчейн - GCC.