@UnknownUser

Как скомпилировать Omxplayer под Raspbian?

Всем привет.
Появилась потребность кое что подправить внутри Omxplayer под Raspberry Pi.
Скопировал исходники отсюда https://github.com/popcornmix/omxplayer и последовал инструкции по компиляции непосредственно на Малинке, то есть запуск
./prepare-native-raspbian.sh #затем запуск недостающих зависимостей
make ffmpeg
make -j$(nproc)

1) Первый сюрприз был - ошибка компиляции, которая гласила что не найдены некие заголовочные файлы.
Таковые находились внутри папки ffmeg, которая в свою оченедь находится в папке с исходниками Omxplayer'a.
2)Проблема решилась скачиванием/компиляцией FFmpeg отдельно.
3)Далее было удалено всё что находилось в файле omxplayer/Makefile.ffmpeg

Теперь компиляция прерывается со следующим (копирую только финальную часть, полагаю, этого достаточно для понимания):
spoiler
/usr/bin/ld: //usr/local/lib/libavformat.a(srtp.o): in function `ff_srtp_encrypt':

/home/pi/omx2/FFmpeg/libavformat/srtp.c:305: undefined reference to `av_aes_init'

/usr/bin/ld: //usr/local/lib/libavformat.a(srtp.o): in function `encrypt_counter':

/home/pi/omx2/FFmpeg/libavformat/srtp.c:48: undefined reference to `av_aes_crypt'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/srtp.c:48: undefined reference to `av_aes_crypt'

/usr/bin/ld: //usr/local/lib/libavformat.a(srtp.o): in function `ff_srtp_encrypt':

/home/pi/omx2/FFmpeg/libavformat/srtp.c:313: undefined reference to `av_hmac_init'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/srtp.c:314: undefined reference to `av_hmac_update'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/srtp.c:320: undefined reference to `av_hmac_final'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/srtp.c:313: undefined reference to `av_hmac_init'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/srtp.c:314: undefined reference to `av_hmac_update'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/srtp.c:318: undefined reference to `av_hmac_update'

/usr/bin/ld: //usr/local/lib/libavformat.a(cache.o): in function `cache_close':

/home/pi/omx2/FFmpeg/libavformat/cache.c:314: undefined reference to `av_tree_enumerate'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/cache.c:315: undefined reference to `av_tree_destroy'

/usr/bin/ld: //usr/local/lib/libavformat.a(cache.o): in function `cache_read':

/home/pi/omx2/FFmpeg/libavformat/cache.c:168: undefined reference to `av_tree_find'

/usr/bin/ld: //usr/local/lib/libavformat.a(cache.o): in function `add_entry':

/home/pi/omx2/FFmpeg/libavformat/cache.c:125: undefined reference to `av_tree_find'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/cache.c:135: undefined reference to `av_tree_node_alloc'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/cache.c:144: undefined reference to `av_tree_insert'

/usr/bin/ld: //usr/local/lib/libavformat.a(crypto.o): in function `crypto_close':

/home/pi/omx2/FFmpeg/libavformat/crypto.c:384: undefined reference to `av_aes_crypt'

/usr/bin/ld: //usr/local/lib/libavformat.a(crypto.o): in function `crypto_write':

/home/pi/omx2/FFmpeg/libavformat/crypto.c:356: undefined reference to `av_aes_crypt'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/crypto.c:352: undefined reference to `av_aes_crypt'

/usr/bin/ld: //usr/local/lib/libavformat.a(crypto.o): in function `crypto_read':

/home/pi/omx2/FFmpeg/libavformat/crypto.c:214: undefined reference to `av_aes_crypt'

/usr/bin/ld: //usr/local/lib/libavformat.a(crypto.o): in function `crypto_open2':

/home/pi/omx2/FFmpeg/libavformat/crypto.c:151: undefined reference to `av_aes_alloc'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/crypto.c:156: undefined reference to `av_aes_init'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/crypto.c:166: undefined reference to `av_aes_alloc'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/crypto.c:171: undefined reference to `av_aes_init'

/usr/bin/ld: //usr/local/lib/libavformat.a(md5proto.o): in function `md5_close':

/home/pi/omx2/FFmpeg/libavformat/md5proto.c:64: undefined reference to `av_md5_final'

/usr/bin/ld: //usr/local/lib/libavformat.a(md5proto.o): in function `md5_write':

/home/pi/omx2/FFmpeg/libavformat/md5proto.c:52: undefined reference to `av_md5_update'

/usr/bin/ld: //usr/local/lib/libavformat.a(md5proto.o): in function `md5_open':

/home/pi/omx2/FFmpeg/libavformat/md5proto.c:41: undefined reference to `av_md5_alloc'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/md5proto.c:44: undefined reference to `av_md5_init'

/usr/bin/ld: //usr/local/lib/libavformat.a(rtmpdigest.o): in function `ff_rtmp_calc_digest':

/home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:39: undefined reference to `av_hmac_alloc'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:43: undefined reference to `av_hmac_init'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:47: undefined reference to `av_hmac_update'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:48: undefined reference to `av_hmac_update'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:50: undefined reference to `av_hmac_final'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:52: undefined reference to `av_hmac_free'

/usr/bin/ld: /home/pi/omx2/FFmpeg/libavformat/rtmpdigest.c:45: undefined reference to `av_hmac_update'

/usr/bin/ld: //usr/local/lib/libswresample.a(resample.o): in function `multiple_resample':

/home/pi/omx2/FFmpeg/libswresample/resample.c:454: undefined reference to `av_get_cpu_flags'

collect2: error: ld returned 1 exit status

make: *** [Makefile:57: omxplayer.bin] Error 1


Я достаточно знаю C++ чтобы более менее понимать, что написано внутри исходников, но к сожалению, плаваю в вопросах компиляции по *nix'ы. Возможно, проблема в том, что сделанное в пункте 3) - недостаточно или не совсем правильно.

Делаю всё это на Raspberry Pi 2 под Rasbpian Buster, если это имеет большое значение.
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 1
@UnknownUser Автор вопроса
Пока по нагугленному по этой ссылке https://github.com/xplodwild/bbqscreen_client/issues/2 поменял в Makefile местами lswresample и lavutil, получился следующий порядок:
omxplayer.bin: version $(OBJS)

$(CXX) $(LDFLAGS) -o omxplayer.bin $(OBJS) -lvchiq_arm -lvchostif -lvcos -ldbus-1 -lrt -lpthread -lswresample -lavcodec -lavformat -lavutil -lswscale -lpcre

$(STRIP) omxplayer.bin
Содержание ошибки немного изменилось, похоже, если поиграться расположением библиотек, можно добиться желаемого.
Попробую завтра, а сейчас надо немного поспать ).

Но если кто может подсказать решение, будет круто.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы