在这里以mips工具链为例子
1.下载以下两个安装包,放在如下所示的目录下:
2.解压这个两个压缩包
tar xzvf tcl8.4.19-src.tar.gz
tar xzvf expect5.45.tar.gz
3.交叉编译tcl8.4
因为tcl不支持交叉编译,所以在configure还需要先使用默认的x86的gcc,等configure运行后在修改Makefile中的参数
cd tcl8.4.19/unix
./configure --prefix=/home/expectdir/tcl-install
make CC=mips-linux-gcc AR=mips-linux-ar
编译过程中会出现一些错误,可能其他嵌入式平台不会出现:
问题1:
解决办法
打开当前的Makefile,找到AC_FLAGS选项,去掉 -DHAVE_FTS=1
问题2:
解决办法
打开当前的Makefile,找到-lieee,去掉该链接。
编译通过后,执行make install,tcl8.4.19的编译就完成了。
可查看相关的bin文件可库文件,如下所示:
4.交叉编译expect
同样的,因为expect不支持交叉编译,所以在configure还需要先使用默认的x86的gcc,等confiure运行后在修改Makefile中的参数
./configure --prefix=/home/expectdir/expect-install --with-tcl=/home/expectdir/tcl-install/lib --with-tclinclude=../tcl8.4.19/generic
make CC=mips-linux-gcc AR=mips-linux-ar
去掉DEFS变量中的HAVE_STROPTS_H
找到LIBS变量,去掉-lieee选项,如下图所示:
最后编译通过
make install
make install 执行完之后会出现一个错误:
tclsh8.6: cannot execute binary file: Exec format error
这个错误是因为交叉工具链编译出的tclsh8.4文件不能再PC上运行,没关系,只要将x86版本的tclsh文件复制过来,使expect可以正常安装。
安装好之后,把对应的bin文件expect,tclsh8.4放到嵌入式设备的/usr/bin目录下。
把对应的文件libexpect5.45.so,libtcl8.4.so ,包括tcl8.4文件夹放入嵌入式设备的/usr/lib目录下,这样就可以运行了。
5.移植结果验证
嵌入式设备下测试结果如下图所示:
可以用ctrl-D结束该命令。