У меня есть проект buildroot, в который я хочу добавить библиотеку, скомпилированную с помощью pascal.Причиной этого является то, что это пользовательская библиотека, и перенос ее на C в данный момент слишком сложен.Я собираю его для Raspberry Pi CM3.Как это работает в настоящее время:
- Я скомпилировал библиотеку
libcustom.so
на raspberry pi (raspbian). - В buildroot я загружаю библиотеку из репозитория git.
Теперь у меня проблема в том, что программа, которая использовала эту библиотеку, не может найти библиотеку (хотя она находится в папке / usr / lib /).Используя команду ldd
, я получил следующий вывод:
$ ldd /usr/lib/libcustom.so
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
ld-linux-armhf.so.3 => not found (0x00000000)
libdl.so.2 => not found (0x00000000)
libc.so.6 => not found (0x00000000)
not a dynamic executable
Проверка выходных данных, полученных той же командой в системе, в которой я скомпилировал библиотеку, помогла мне определить, какие суб-зависимости отсутствовали.Поскольку архитектура обеих систем одинакова, я решил, что для проверки того, чего не хватает, я мог бы просто скопировать библиотеки из системы компиляции в систему buildroot.(отсутствующие библиотеки были libc.so.6
, libdl.so.2
и lib-linux-armhf.so.3
).Теперь ldd
дает мне следующее:
$ ldd /usr/lib/libcustom.so
checking sub-depends for '/lib/ld-linux-armhf.so.3'
checking sub-depends for '/usr/lib/libdl.so.2'
checking sub-depends for '/usr/lib/libc.so.6'
/lib/ld-linux-armhf.so.3 (0x76fc2000)
linux-vdso.so.1 (0x7ef00000)
checking sub-depends for '/usr/lib/libc.so.6'
/lib/ld-linux-armhf.so.3 (0x76ee8000)
linux-vdso.so.1 (0x7efeb000)
/lib/ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0x00000000)
libc.so.6 => /usr/lib/libc.so.6 (0x00000000)
/lib/ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0x00000000)
Пользовательская библиотека все еще не работает (и ldd по-прежнему указывает на пустые (0x00000000) библиотеки.
Я былнемного поискать, однако есть еще две вещи , которые я не понимаю:
- Почему вышеприведенное решение не работает? Библиотеки имеют ту же архитектуру, но, как указывает ldd,выше, некоторые библиотеки все еще не могут быть правильно найдены.
- Как включить библиотеки в buildroot? Я искал это и нашел, как добавить пользовательские пакеты, но я все еще не знаю, как добавить определенные библиотеки (такой как тот, который я добавил вручную).