Я нашел частичное решение, так что любой, кто получит лучшее, будет приветствоваться.
Как предложил @Keltar в комментарии, я отладил его с помощью gdb
и backtrace, как уже было сказано в вопросе.Последняя строка backtrace вызвала у меня подозрения:
#8 0xb68acdba in () at /usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0
, что указывало на то, что это не библиотека, созданная мной, а библиотека, установленная с apt
.Я проверил все пути в Makefile
, и все указывало на мою собственную сборку.Поэтому я проверил файлы динамической библиотеки *.so
и обнаружил, что ситуация следующая:
drwxr-xr-x 3 odroid odroid 4096 Oct 15 12:21 cmake
lrwxrwxrwx 1 odroid odroid 17 Oct 15 12:21 libSDL2-2.0d.so -> libSDL2-2.0d.so.0
lrwxrwxrwx 1 odroid odroid 21 Oct 15 12:21 libSDL2-2.0d.so.0 -> libSDL2-2.0d.so.0.8.0
-rw-r--r-- 1 odroid odroid 4317020 Oct 15 12:21 libSDL2-2.0d.so.0.8.0
lrwxrwxrwx 1 odroid odroid 15 Oct 15 12:40 libSDL2-2.0.so -> libSDL2-2.0d.so
-rw-r--r-- 1 odroid odroid 7593354 Oct 15 12:21 libSDL2d.a
-rw-r--r-- 1 odroid odroid 4754 Oct 15 12:19 libSDL2maind.a
lrwxrwxrwx 1 odroid odroid 14 Oct 15 13:38 libSDL2.so -> libSDL2-2.0.so
drwxr-xr-x 2 odroid odroid 4096 Oct 15 12:21 pkgconfig
Обратите внимание, что для файла символьной ссылки libSDL2.so -> libSDL2-2.0.so
связанный файл libSDL2-2.0.so
не был создан.
Мое решение состояло в том, чтобы перестроить библиотеку в режиме Release
вместо Debug
, используя cmake -DCMAKE_BUILD_TYPE=Release
: таким образом, все файлы библиотеки являются правильными.Другим решением может быть символическая ссылка на файл (ы) вручную, но легко что-то испортить.
Так что, похоже, ошибка в том, как SDL cmake
пишет инструкции для типа сборки Debug, потому что в режиме выпускамоя программа запускается.
Если у кого-то есть более подходящее решение или вы найдете ошибку, которую я не смог найти, сообщите мне.