我正在运行Linux 2.6.35的ARM系统,并使用Glibc 2.12.2。我想要对我的库和应用程序可执行文件进行预链接,但是似乎无法链接任何直接依赖于glibc的内容。当prelink尝试在/lib上运行时,会出现以下错误:
有没有办法让我修复这个问题或者说说服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
我使用的是Freescale的i.MX51平台,它是一个ARM Cortex-8。由于我使用了我们开发套件提供的GCC/G++版本进行编译,所以我假设ELF二进制文件是32位的。
编辑:
我将-h标志更改为-l,并将系统库移到了列表的前面。但我仍然得到相同的错误。
我在设备上运行prelink,而不是在交叉编译机器上运行。
LD_LIBRARY_PATH包含/lib和/usr/lib。
尝试以以下方式运行prelink: prelink -a prelink -amR
两种方法都得到了相同的结果。
我正在运行gcc 4.4.6交叉编译器。 我正在运行ld 1.12.1 ld。
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
我使用的是Freescale的i.MX51平台,它是一个ARM Cortex-8。由于我使用了我们开发套件提供的GCC/G++版本进行编译,所以我假设ELF二进制文件是32位的。
编辑:
我将-h标志更改为-l,并将系统库移到了列表的前面。但我仍然得到相同的错误。
我在设备上运行prelink,而不是在交叉编译机器上运行。
LD_LIBRARY_PATH包含/lib和/usr/lib。
尝试以以下方式运行prelink: prelink -a prelink -amR
两种方法都得到了相同的结果。
我正在运行gcc 4.4.6交叉编译器。 我正在运行ld 1.12.1 ld。