статически и динамически связывать одну и ту же библиотеку с разными версиями - PullRequest
0 голосов
/ 01 октября 2018

У меня есть разветвленная версия OpenCV (v2.4.8), скомпилированная без FFMPEG как статически связанная библиотека (libopencv_core.a, libopencv_highgui.a и т. Д.) С некоторыми пользовательскими изменениями, я связываю это с моей библиотекой, скажем, libsdk.so.

В настоящее время я создаю примеры приложений на libsdk.so, эти пользовательские приложения используют highgui и ядро ​​OpenCV из (ap-get) менеджера пакетов напрямую (v2.4.9 или v3.3) для открытия камеры и получения кадров из видео.

Мой пример приложения обрабатывает видео, а затем генерирует segfault,

0x0000007fb20ca770 в av_malloc () из /usr/lib/aarch64-linux-gnu/libavutil-ffmpeg.so.54

Я использую CMake для компиляции этих библиотек, я думаю, это может быть связано с тем, что символ не может быть разрешен при вызове деструктора.Есть ли какие-то инструменты, чтобы выяснить, что именно может происходить.Когда я связываю пример приложения с скомпилированным opencv, они работают нормально.Этот подход работает на Linux Ubuntu x86_64, но не на Arm64 (кросс-компиляция)

РЕДАКТИРОВАТЬ: я пишу это, чтобы получить предложения и отзывы о том, что может быть проблема здесь, в настоящее время пример приложения зависает, когда оно пытаетсяосвободить память.Этот пример приложения написан на C ++ 11.

...