1. 编译
下载最新版busybox,我用的是busybox-1.22.1
解压 tar jxf *.bz2
进入目录
运行 make menuconfig
选择退出
运行 make
编译成功后生成 busybox
2. 运行环境
cp busybox /user/bin
手工添加busybox功能命令,首先确认ubuntu中没有下面几个命令,否则会覆盖
ln -sf /user/bin/busybox inetd
ln -sf /user/bin/busybox ftpd
ln -sf /user/bin/busybox httpd
只测试这几个服务,只做这几个
3. ftpd测试
配置文件 /etc/inetd.conf
内容 21 stream tcp nowait root ftpd ftpd -w /ptop
运行 inetd
使用客户端测试,记得建立/ptop目录,放一些文件
4. httpd测试
建立目录/ptop/www/cgi-bin
www目录可以放网页
cgi-bin 放cgi程序
准备测试的cgi,busybox中已经有准备进入\busybox-1.22.1\networking
运行gcc httpd_indexcgi.c 得到a.out
mv a.out index.cgi
mv index.cgi /ptop/cgi-bin
运行http服务命令 httpd -p 8080 -h /ptop/www
在浏览器中输入 http://xxx.xxx.xxx.xxx:8080/ 即可显示目录内容
httpd没有找到页面,自动运行 cgi-bin目录中的index.cgi的功能。
5. wput 不是busybox中的,一起写在这里吧
下载 wput-0.6.2.tgz
解压 tar zxf wput-0.6.2.tgz
编译 ./configure
make
交叉编译
CFLAGS=-02 ./configure --host=arm-linux --without-ssl
make
同步目录命令示例 wput -B --basename=/sdcard/ftproot/ /sdcard/ftproot/ ftp://test:test@192.168.10.100/
调试打印信息加入 -d参数
在运行arm-linux版本时候,总是无法上传,跟踪代码后,发现执行ftp_do_passive函数时,会获取一个无效的ip进行上传,
具体原因未查明,修改了如下代码,可以上传文件,但有没有其他不良影响未知
----------
fptlib.c
----------
parse_passive_string(self->r.message, &sip, &sport); //从该函数获取的服务IP地址总是错误,导致 socket_connect出错
printout(vDEBUG, "Remote server data port: %s:%d\n", printip((unsigned char *) &sip), sport);
if(self->ps->type == PROXY_OFF)
self->datasock = socket_connect(sip, sport); //修改为self->datasock = socket_connect(self->host->ip/*sip*/, sport);