在移植的过程中如果只有某个程序少动态链接库,且库的版本和系统的有冲突,如libc的版本不同等。这个时候直接覆盖系统库代价太大。比较合适的办法是给这个程序单独提供一套动态链接库,然后指定应用程序使用单独提供的这套动态链接库。
下面以 vsftpd 为例
1. # mkdir -p my_vsftpd/usr/lib //新建三个目录 my_vsftpd my_vsftpd/lib my_vsftpd/usr/lib
2. 把 vsftpd 二进制文件复制到 my_vsftpd,vsftpd 的所有依赖库复制到 my_vsftpd/lib 或下 my_vsftpd/usr/lib
3. 在 vsftpd 目录下 新建名为 runme 的文件,并且加可执行权限,内容如下:
D=$(dirname $0)
$D/lib/ld.so.1 --library-path $D/lib:$D/usr/lib /my_vsftpd/vsftpd $@
备注:此处的/my_vsftpd/vsftpd 为vsftpd 文件存放的绝对路径
4. 把 my_vsftpd 复制到 busybox系统的 / 目录下(根目录)
以下操作均在busybox 系统里面
5. # cd /usr/sbin
6. # ln -sfn /my_vsftpd/runme /usr/sbin/vsftpd
7. # ln -sfn /my_vsftpd/lib /usr/sbin/lib
如果/my_vsftpd/usr/lib 目录下为空则不需要执行下面两步
8. # mkdir usr
9. # ln -sfn /my_vsftpd/usr/lib /usr/sbin/usr/lib
阅读(1226) | 评论(0) | 转发(0) |