Сборка osg с плагином ffmeg
Я пытаюсь собрать OpenSceneGraph (OSG) с плагином FFMPEG. С помощью:
- CentOS 7.2 64-битная
- GCC 4.8.5
- ОСГ 3.4.0
- FFMPEG 2.8
С FFMPEG я ./configure
без вариантов, make
а также make install
, В ОСГ я cmake .
, а также make
, Я получаю это:
Linking CXX shared module ../../../lib/osgPlugins-3.4.0/osgdb_ffmpeg.so
/usr/bin/ld: /usr/local/lib/libavformat.a(allformats.o): relocation R_X86_64_32 against symbol `ff_a64_muxer' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: /usr/local/lib/libavformat.a(amr.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
...(and a ton of others like this)
Итак, я возвращаюсь к FFMPEG и ./configure --enable-pic
, Из --help:
--enable-pic build position-independent code
make clean
, make
, а также make install
,
Затем я иду в ОСГ и make
и получить гораздо меньше, но все же получить один:
Linking CXX shared module ../../../lib/osgPlugins-3.4.0/osgdb_ffmpeg.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Я провел некоторое исследование о том, как определить, построен ли объект с помощью PIC, и нашел:
terminal-> readelf --relocs ./libavcodec/x86/vc1dsp_mmx.o | egrep '(GOT|PLT|JU?MP_SLOT)'
000000000ea6 007300000004 R_X86_64_PLT32 0000000000000000 ff_avg_pixels16_mmx - 4
000000000eb6 007400000004 R_X86_64_PLT32 0000000000000000 ff_avg_pixels8_mmx - 4
000000000ec6 007500000004 R_X86_64_PLT32 0000000000000000 ff_put_pixels16_mmx - 4
000000000ed6 007600000004 R_X86_64_PLT32 0000000000000000 ff_put_pixels8_mmx - 4
Когда я собираю без --enable-pic, предыдущая команда ничего не возвращает.
Для libavcodec.a я сделал nm
на нем искать этот символ ff_pw_9
и нашел эти ссылки:
constants.o:
...
00000000000002d0 R ff_pw_9
...
vc1dsp_mmx.o:
...
U ff_pw_9
...
vp8dsp_loopfilter.o:
...
U ff_pw_9
...
Что мне здесь не хватает?