Я использую prelink в системе ARM с Linux 2.6.35. Я использую Glibc 2.12.2. Я хотел бы предварительно связать свои библиотеки и исполняемые файлы приложений. Однако я не могу связать ничего, что напрямую зависит от glibc. Когда предварительная ссылка пытается запуститься на /lib
, возникает ошибка:
Could not write /lib/libc-2.12.2.so: Layout error: section size too small for data
Есть ли способ исправить это или, возможно, убедить предварительную ссылку делать предварительную ссылку на все, кроме того, что находится в /lib
? Я знаю о функции черного списка в /etc/prelink.conf
, но тогда prelink выдаст ошибку, потому что не может найти зависимости, расположенные в этом каталоге.
Редактировать:
Вот мой prelink.conf
~ # cat /etc/prelink.conf -h /usr/local/Qt-4.7.4/lib -h /usr/lib -h /lib -h /usr/local/dbus/lib -h /usr/local/sqlite/lib -h /usr/local/ncurses/lib -h /usr/local/expat/lib -h /usr/local/ssl/lib
Я работаю на платформе i.MX51 от Freescale. Это ARM Cortex-8. Поскольку я скомпилировал все с версией GCC/G++, поставляемой с нашим набором для разработки, я предполагаю, что двоичные файлы ELF являются 32-разрядными.
Редактировать:
Я изменил флаги -h на -l и переместил системные библиотеки в начало списка. Я все еще получаю ту же ошибку.
Я запускаю прелинк на устройстве, а не на машине для кросс-билдинга.
LD_LIBRARY_PATH содержит /lib и /usr/lib
Пробовал запускать прелинк как: prelink -a prelink -amR
и получил тот же результат в обоих направлениях.
Я запускаю кросс-компилятор gcc 4.4.6. Я использую ld 1.12.1 ld.