Я написал плагин gstreamer, используя шаблон шаблона, оканчивающийся в руководстве для авторов плагинов gstreamer (http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/chapter-building-boiler.html). Я сначала построил плагин без полной реализации цепной функции (в основном пустой плагин, который передавал данные из источника, чтобы потоковаться без изменений).Ссылка на внешние библиотеки в плагине gstreamer с использованием autotools
Теперь я реализую функцию цепочки, чтобы выполнить базовую фильтрацию данных в буфере. В фильтрации используется внешняя библиотека заточки (которую я успешно использовал вне gstreamer). При строительстве с использованием Autotools я не получаю никаких ошибок, но при создании трубопровода с помощью нового плагина, я получаю неопределенную ошибку символ
(gst-plugin-scanner:6512): GStreamer-WARNING **: Failed to load plugin '/usr/local/lib/gstreamer-1.0/libgstsharpening.so': /usr/local/lib/gstreamer-1.0/libgstsharpening.so: undefined symbol: InitializeSharpeningModule
я есть правда очень новый Autotools, и я полагаю, что моя проблема лежит где-то в этом процессе , но я не могу понять, где. Внешняя библиотека заточки используется, можно найти здесь
/public/gstreamer_pipeline/lib/libsharpening.so
Я редактировал плагин Makefile.am находится в каталоге Src для моего плагина
/public/gstreamer_pipeline/src/gst-sharpening/src
Содержимого редактируемого Makefile.am является
plugin_LTLIBRARIES = libgstsharpening.la
libgstsharpening_la_SOURCES = gstsharpening.c gstsharpening.h
libgstsharpening_la_CFLAGS = $(GST_CFLAGS) -I/public/gstreamer_pipeline/include
libgstsharpening_la_LIBADD = $(GST_LIBS) -lsharpening
libgstsharpening_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -L/public/gstreamer_pipeline/lib
libgstsharpening_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
noinst_HEADERS = gstsharpening.h
Неопределенная ошибка символа возникает в случае создания конвейера из основной программы или создания конвейера из командной строки с использованием
gst-launch-1.0 fakesrc ! sharpening ! fakesink
Выход работает LDD на новый созданный плагин библиотеки (без изменения LD_LIBRARY_PATH) является
ldd /usr/local/lib/gstreamer-1.0/libgstsharpening.so
linux-vdso.so.1 => (0x00007fff17bc0000)
libgstbase-1.0.so.0 => /usr/local/lib/libgstbase-1.0.so.0 (0x00007f3c51778000)
libgstcontroller-1.0.so.0 => /usr/local/lib/libgstcontroller-1.0.so.0 (0x00007f3c51568000)
libgstreamer-1.0.so.0 => /usr/local/lib/libgstreamer-1.0.so.0 (0x00007f3c51250000)
libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x00007f3c5104d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f3c50db0000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3c50bac000)
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x00007f3c5095f000)
libffi.so.6 => /usr/local/lib/../lib64/libffi.so.6 (0x00007f3c50755000)
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x00007f3c50420000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3c50203000)
librt.so.1 => /lib64/librt.so.1 (0x00007f3c4fffa000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3c4fc67000)
/lib64/ld-linux-x86-64.so.2 (0x0000003406c00000)
configure.log выход http://pastie.org/10450341
Выход замыкающих и сделать установку http://pastie.org/10450352
так где же используется символ «InitializeSharpeningModule»? и где он определен (экспортер)? –
Используется в функции chain() нового плагина, который я пытаюсь создать, и определяется в /public/gstreamer_pipeline/lib/libsharpening.so – RyanL
У вас есть настройка LD_LIBRARY_PATH (или некоторые другие средства), чтобы сделать компоновщик времени выполнения смотрите в библиотеке '/ public/gstreamer_pipeline/lib /' для библиотек? –