我正在使用 Linux 2.6.35 的 ARM 系统上运行 prelink。我正在使用 Glibc 2.12.2。我想预先链接我的库和应用程序可执行文件。但是,我似乎无法链接直接依赖 glibc 的任何内容。当 prelink 尝试在 上运行时/lib
,它会出错:
Could not write /lib/libc-2.12.2.so: Layout error: section size too small for data
有没有办法让我解决这个问题,或者说服 prelink 预先链接除驻留内容之外的所有内容/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 平台上。它是 ARM Cortex-8。由于我已经使用我们的开发工具包附带的 GCC/G++ 版本编译了所有内容,因此我假设 ELF 二进制文件是 32 位的。
编辑:
我将 -h 标志更改为 -l 并将系统库移动到列表的前面。我仍然得到同样的错误。
我在设备上运行预链接,而不是在我的交叉构建机器上。
LD_LIBRARY_PATH 包含 /lib 和 /usr/lib
尝试将 prelink 运行为: prelink -a prelink -amR
并以两种方式得到相同的结果。
我正在运行 gcc 4.4.6 交叉编译器。我正在运行 ld 1.12.1 ld。