ipsvd交叉编译

在一个项目中使用到了tcpsvd和udpsvd,但是由于bosybox无法更新,不能使用bosybox中的ipsvd程序,因此使用ipsvd的源码进行交叉编译来获取tcpsvd和udpsvd.此处使用的交叉编译器为/eldk-5.5.2/powerpc/;
$CC=“powerpc-linux-gcc -m32 -mhard-float --sysroot=/opt/eldk-5.5.2/powerpc/sysroots/powerpc-linux”
$AR=powerpc-linux-ar

下载

wget http://smarden.org/ipsvd/ipsvd-1.0.0.tar.gz

解压

tar -xzvf ipsvd-1.0.0.tar.gz
cd net/ipsvd-1.0.0/

交叉编译和修改

  • 首先运行./package/compile,将生成./compile/目录,并使用gcc编译器进行编译
  • 进入./compile/目录,依次修改print-ar.sh,print-cc.sh,print-ld.sh,如下
>>> cat print-ar.sh 
cat warn-auto.sh
echo 'main="$1"; shift'
echo 'rm -f "$main"'
echo '$AR cr "$main" ${1+"$@"}'
case "`cat systype`" in
  sunos-5.*) ;;
  unix_sv*) ;;
  irix64-*) ;;
  irix-*) ;;
  dgux-*) ;;
  hp-ux-*) ;;
  sco*) ;;
  *) echo 'powerpc-linux-ranlib "$main"' ;;
esac
>>> cat print-cc.sh   
#cc="`head -n1 conf-cc`"
cc="$CC"
cat warn-auto.sh
echo exec "$cc" '-c ${1+"$@"}'
>>> cat print-ld.sh    
#ld="`head -n1 conf-ld`"
ld="$CC -s"
cat warn-auto.sh
echo 'main="$1"; shift'
echo exec "$ld" '-o "$main" "$main".o ${1+"$@"}'
  • 运行make tcpsvd udpsvd
  • 此时报错/bin/sh: ./chkshsgr: cannot execute binary file: Exec format error,这是由于chkshsgr这个程序被交叉编译了,根据makefile中的chkshsgr的生成规则,我们重新编译下chkshsgr,如下
#由于是单个文件,所以一条指令就行
gcc -O2 -Wall chkshsgr.c -o chkshsgr
  • 重新运行make tcpsvd udpsvd
  • 检查文件类型
>>> ls -l -h tcpsvd udpsvd
-rwxrwxr-x 1 alex alex 68K 5月   7 14:34 tcpsvd
-rwxrwxr-x 1 alex alex 64K 5月   7 14:34 udpsvd

>>> file tcpsvd udpsvd    
tcpsvd: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, interpreter /lib/ld.so.1, for GNU/Linux 2.6.16, BuildID[sha1]=f334356e07bdeb77a5c75032eb6b13ec61aa8d55, stripped
udpsvd: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, interpreter /lib/ld.so.1, for GNU/Linux 2.6.16, BuildID[sha1]=8392472ff1b0e0de89881bea2b41144d5c9bd2d3, stripped
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值