Приветствую, форумчане!
Задался я целью собрать mplayer под Debian Jessie со своими опциями (в дебиановском не работает вывод в графической консоли через фреймбуфер).
Скачал последнюю версию исходников по адресу http://mplayerhq.hu/MPlayer/releases/MPlayer-1.3.0.tar.xz .
Много чего поправил, медленно продвигаясь вперёд в процессе компиляции, но вот дошёл до такого сообщения линковщика:
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86GetOptValBool'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `XNFalloc'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `XNFcalloc'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `ErrorF'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86Int10AllocPages'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86LoadSubModule'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86CVTMode'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86ValidateModes'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86DrvMsgVerb'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86PrintModes'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86CheckModeForMonitor'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86Int10FreePages'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86DrvMsg'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86InterpretEDID'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86FreeInt10'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86int10Addr'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86ExtendedInitInt10'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86ExecX86int10'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `XNFasprintf'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86FindScreenForEntity'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86ModeStatusToString'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86ErrorFVerb'
/usr/lib/xorg/modules/libvbe.so: undefined reference to `xf86ProcessOptions'
collect2: error: ld returned 1 exit status
Makefile:748: ошибка выполнения рецепта для цели «mplayer»
make: *** [mplayer] Ошибка 1
Понятно, что не подключены какие-то библиотеки, экспортирующие 23 перечисленные выше функции.
Поискал в библиотеках, 7 функций таки нашёл в /usr/lib/x86_64-linux-gnu/libXfont.so.1 и в /usr/lib/xorg/modules/libint10.so . А вот оставшиеся 16: xf86GetOptValBool, XNFalloc, XNFcalloc, xf86LoadSubModule, xf86CVTMode, xf86ValidateModes, xf86DrvMsgVerb, xf86PrintModes, xf86CheckModeForMonitor, xf86DrvMsg, xf86InterpretEDID, XNFasprintf, xf86FindScreenForEntity, xf86ModeStatusToString, xf86ErrorFVerb и xf86ProcessOptions + 17-ая ErrorF, найденная также в libXfont.so.1, были найдены в программе /usr/bin/Xorg .
Собственно вопросы:
1. Как подключить к проекту Xorg, чтоб эти функции увидел линкер? Ведь это не библиотека, и опция типа -lXorg не прокатит.
2. Как говорилось выше, функция ErrorF присутствует и в libXfont.so.1 (там она помечена как Weak), также реализована в заголовке /usr/include/X11/Xtrans/Xtransint.h (именно реализована, а не просто объявлена, т. е. с телом), и в /usr/bin/Xorg (где уже имеет пометку Text, а не Weak). Не чревато ли это конфликтами? Насколько я понимаю, Weak-функции могут появляться сколько угодно раз, а вот Text - не более одного. Или я ошибаюсь?
Заранее спасибо.
P.S. На самом деле, отвлекаясь от проблем mplayer'а, в общем виде 1-й вопрос можно переформулировать так: есть некая библиотека libvbe.so (ну или просто некая библиотека, неважно какая), которая содержит ссылки на некие внешние функции, реализованные не в какой-то другой библиотеке, а в исполняемой программе Xorg. Можно ли каким-то образом объяснить это линкеру, чтоб он не ругался?