经过多番折腾,在用多种方法尝试编译和移植不同版本的samba软件之后,找到一种可以顺利将smb协议应用到arm+arm_v5t_le-gcc环境中的方法。其步骤大致如下:
1.下载源代码
从http://www.samba.org 下载 samba-2.2.7a.tar.gz 并解压。
因为按照本操作文档执行,可以移植成功2.X.X版本。当移植3.x.x版本时,由于系统库的不支持,无法编译成功。
2.设置环境变量
export CPPFLAGS=-I/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le/include export LDFLAGS=-L/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le/lib
export CC=/opt/mv_pro_4.0.1/montavista/pro/devkit/arm/v5t_le3.
3.执行:./configure --host=i686 --target=arm-linux
host表示当前机器的环境。Target表示交叉编译要支持的环境
4.修改makefile,将
·prefix修改为:prefix=/mnt/nand/web/
·编译器修改为CC=arm_v5t_le-gcc
因为Web程序在板上的位置在于/mnt/nand/web/中,smbClient程序需要到lib下找smb.conf配置文件。又由于我们板上的程序必须由arm_v5t_le-gcc编译器编译才能执行。
5.执行make, make 会出现许多warning,但是编译成功。
6.make install后就安装到了本地/mnt/nand/web/中。拷贝其中的smbclient到板子/mnt/nand/web/中。
7.运行./smbClient -L //DevolopServer -N 出错,报错:找不到/mnt/nand/web/lib/smb.conf
8.在/mnt/nand/web/新建lib目录,并将安装包中packaging/下任意一smb.conf拷贝到板子的/mnt/nand/web/lib下。
9.执行./smbClient -L //DevolopServer -N(查询DevolopServer上提供的目录和打印机清单)
10.执行./smbClient -L //DevolopServer/pub -N(登陆pub目录)
可以看到,已经登陆成功,并且已进入smb的操作命令行模式。
11. 执行get test4smb.txt test.txt(下载一个txt文件)
可以发现这个文件已经存在于nand文件系统中。
至此,证明已可用smbclient访问windows共享目录下文件。