Ошибка перекрестной компиляции Raspberry PI — неизвестный символ _dl_hwcap

#raspberry-pi #cross-compiling #dynamic-linking

#raspberry-pi #перекрестная компиляция #динамическая компоновка

Вопрос:

Я успешно настроил среду перекрестной компиляции для моего RPI под 64-разрядной ubuntu. Я могу скомпилировать и запустить личный проект, используя gstreamer, просто отлично.

Из-за проблем с производительностью gstreamer я хочу поработать над форком omxplayer. Я адаптировал его к своей среде, и компиляция самих ffmpeg и omxplayer работает просто отлично.

Однако связывание фактического исполняемого файла (ffmpeg или omxplayer.bin) приводит к ошибке связывания, которую я не смог устранить.

Здесь вы найдете полный вывод последнего неудачного шага компоновки с подробными флагами:

https://gist.github.com/deets/3bba7c94017405d28f81

Сообщение об ошибке

 ffmpeg_compiled/usr/local/lib/libavcodec.so: undefined reference to `_dl_hwcap'
collect2: error: ld returned 1 exit status
 

Отсутствующий символ для меня предполагает что-то с динамической загрузкой. Может быть, ошибка libc или libdl? Но почему они работают нормально при компиляции другого проекта?

Ответ №1:

Найден виновник. При настройке среды перекрестной компиляции убедитесь, что ваша копия библиотек RPI верна. У меня были неразрешенные ссылки на символьные библиотеки, которые требовали исправления в моей rsync-копии файловой системы RPI.

Комментарии:

1. Какие символические ссылки? У меня точно такая же ошибка (с omxplayer тоже по совпадению — или нет). Какую команду вы используете для правильной синхронизации? Я использую rsync -rl —delete-after —safe-links —exclude=’usr/share/***’ —exclude=’usr / bin / ***’ —exclude=’usr /games / ***’ —exclude=’usr /sbin/***’ —exclude=’usr/src/***’ pi@ $1:/{lib,usr} .

2. Виртуальной машины, на которой я это делал, давно нет… Я не исследовал rsync, поэтому не могу прокомментировать вашу команду там. Библиотеки были в основном системными в / lib / arm … если я правильно помню. Но, в конечном счете, просто найдите все ссылки в вашем клоне, и если у них есть существующее назначение.

3. Спасибо. Я нашел другую статью с дополнительной информацией и нашел несколько неработающих ссылок, но все равно не смог заставить ее работать. Я собираюсь попробовать без опции —safe-links (хотя в ней указано использовать ее в нескольких руководствах по кросс-компиляции RPi), а затем выполнить поиск неработающих ссылок.