将expect脚本移植到嵌入式linux上

8 篇文章 0 订阅

嵌入式设备需要telnet访问服务器并在服务器上执行工具,用expect脚本实现,但嵌入式系统已经将expect裁剪掉,今天将expect移植过来,不是十分清晰,为了防止以后忘记,将整个过程记录下来。

网上相关并不多,这篇是我认为写的最好的。tclexpect版本有很多,为了简洁,我使用的也是这篇文章链接中的版本,分别是tcl8.6.10-src.tar.gzexpect5.45.3.tar.gz。编译服务器是Ubuntu18.04_x86_64,嵌入式是linux4.9_armv7l。整个过程分为三步:tcl的编译expect的编译嵌入式部署,下面就按这个过程记述整个过程。

tcl的编译

1、打开终端,确认交叉编译链arm-hAI-linux-gcc能够正确引用,是否需要执行export LC_ALL=Csource /etc/profile

2、在/home/ubuntu/mkdir expect创建工作文件夹,将下载好的tcl8.6.10-src.tar.gz解压到/home/ubuntu/expect

3、进入tcl对应的文件夹,cd /home/ubuntu/expect/tcl8.6.10/

4、为编译提前设置几个变量,如果不设置在后面make的时候有可能报错。例如下面这种问题。 当然这些不全必须。

  export tcl_cv_type_64bit="long long
  export tcl_cv_type_64bit="long long"
  export ac_cv_c_bigendian=no
  export tcl_cv_strtod_buggy=1
  export ac_cv_func_strstr=yes
  export ac_cv_func_opendir=yes

5、配置:./configure --prefix=/home/ubuntu/expect/arm-tcl --host=arm-hAI-linux

--prefix:指定后面make install将tcl的最终结果放到哪

--host:指定交叉编译工具,为工具前缀,我的gcc全称为arm-hAI-linux-gcc

6、先执行make编译,再执行make install安装。极大概率不会出错。这部执行成功整个工作完成40%

expect的编译

1、将下载好的expect5.45.3.tar.gz解压到/home/ubuntu/expect中,进入expect对应的文件夹,

cd /home/ubuntu/expect/expect5.45.3/

2、配置:./configure --prefix=/home/ubuntu/expect/arm-expect

3、修改Makefile,将里面的CC = gcc改为CC = arm-hAI-linux-gcc

4、先执行make编译,再执行make install安装。极大概率不会出错。这部执行成功整个工作完成60%,剩下的就是嵌入式部署

嵌入式部署

1、expect编译完成后可执行程序expect并不在arm-expect/bin中,需要将它拷贝过来,

cp /home/ubuntu/expect5.45.3/expect /home/ubuntu/arm-expect/bin/

2、将arm-expect整个文件夹拷贝到嵌入式设备上,假设路径为/tmp/arm-expect

3、其实现在就可以到嵌入式设备上尝试手动执行expectcd /tmp/arm-expect;./expect执行过程中遇到错改错即可,都是依赖库找不到或文件找不到,拷贝一下即可。不放心可以看完第4步再执行

4、expect的执行依赖3个文件,libtcl8.6.solibexpect5.45.3.soinit.tcl。前两个动态库存在这几个文件夹中存在不止一处,将arm-tcl/lib/中的libtcl8.6.so拷贝到程序运行的环境变量文件夹中,例如/usr/lib.arm-expect/bin/中的libexpect5.45.3.so也做相同操作拷贝。拷贝完后如果重新export更新环境变量。这个时候如果运行expect,可能会报下面错误:

Tcl_Init failed: Can't find a usable init.tcl in the following directories:

后面跟着若干路径,这是缺少init.tcl所致,先不要相信提示中说的:

This probably means that Tcl wasn't installed properly.

init.tcl也不止存在与一个地方,将arm-tcl/lib/tcl8.6/中的拷贝到上面提示信息中的任意一个你觉得合适的位置,再执行expect就成功了!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值