- 论坛徽章:
- 0
|
为了加快应用程序的起动过程和降低进程之间非共享内存,花好了几天时间折腾prelink,虽然效果不太明显,还是有一定的效果。这里介绍一下编译ARM版prelink的方法:
1. 下载elfutils-0.125.tar.gz
2. 配置elfutils
tar zxvf elfutils-0.125.tar.gz
cd elfutils-0.125
./configure --host=arm-linux $PREFIX_USR_LOCAL;
3. 修改 src/findtextrel.c:491
size_t nsegments, struct segments segments[nsegments],
-->
size_t nsegments, struct segments* segments,
4. 修改src/ranlib.c
#include
5. 修改libelf/common.h
#define CONVERT(Var) \
(Var) = (sizeof (Var) == 1 \
? (unsigned char) (Var) \
: (sizeof (Var) == 2 \
? (Elf32_Half)bswap_16 (Var) \
: (sizeof (Var) == 4 \
? (Elf32_Word)bswap_32 (Var) \
: (Elf32_Xword)bswap_64 (Var))))
à
#define CONVERT_TO(Dst, Var) \
(Dst) = (sizeof (Var) == 1 \
? (unsigned char) (Var) \
: (sizeof (Var) == 2 \
? (Elf32_Half)bswap_16 (Var) \
: (sizeof (Var) == 4 \
? (Elf32_Word)bswap_32 (Var) \
: (Elf32_Xword)bswap_64 (Var))))
6. 修改src/strings.c
#include
7. 编译安装elfutils
make;make install
8. 下载prelink-20060712.tar.bz2
tar jxf prelink-20060712.tar.bz2
9. 修改src/Makefile.am
删除 arch-ppc.c arch-ppc64.c
prelink_LDFLAGS = -all-static $(LIBGELF)
10. 配置prelink。
aclocal -I ./m4 ;automake;autoconf; libtoolize --force
echo ac_cv_header_libelf_h=yes >arm-linux.cache
/configure --host=arm-linux $PREFIX_USR_LOCAL --cache-file=arm-linux.cache;
11. 修改 prelink.h
#define PT_GNU_STACK (PT_LOOS + 0x474e551)
12. 编译安装prelink
make;make install
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30686/showart_346424.html |
|