写点什么

手把手带你基于嵌入式 Linux 移植 samba 服务

  • 2022 年 2 月 16 日
  • 本文字数:2008 字

    阅读完需:约 7 分钟

本文分享自华为云社区《嵌入式Linux下移植samba服务--<基于北斗和4G cat1模块的智慧物流>开发实战》,作者: 小小小橘。


Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。


嵌入式开发过程中,往往需要将文件传输至开发板,移植 samba 服务之后,将开发板接入局域网之后,客直接通过访问开发板 IP 地址直接访问开发板 samba 共享文件夹,在开发板和局域网内传输文件方便快捷。此次主要介绍移植 samba 以及开发中可能遇到的问题。


此次感谢华为云 IoT 课程《基于北斗和 4G cat1 模块的智慧物流》提供的 STM32MP1 开发板,可关注华为云公众号、华为云 IoT 物联网论坛获取更多活动内容。

开发环境

系统:Ubuntu 18.04 64 位


开发板:STM32MP157


samba 版本:3.2.15

准备工作

samba 下载链接:https://download.samba.org/pub/samba/


选择 samba-3.2.15.tar.gz 下载。

编译

下载完成之后,在文件夹下使用 tar 命令进行解压,解压完成之后 cd 进入 samba-3.2.15/source 文件夹下进行配置。


tar -vxf samba-3.2.15.tar.gz
复制代码


进入文件夹下后


修改 configure 文件,修改内容见


编辑修改 configure 文件内容,修改内容如下,全文共 7 处需修改。


原文内容:

echo "$as_me: error: cannot run test program while cross compilingSee \`config.log' for more details." >&2;}   { (exit 1); exit 1; }; }
复制代码

修改后见下图


执行如下命令

$as_echo "$as_me: error: cannot run test program while cross compilingSee \`config.log' for more details." >&2;} #   { (exit 1); exit 1; };      }; }
复制代码


至此,配置完成。


配置完成之后执行 make 命令进行编译,编译完成如下图


编译完成之后执行 make install 命令安装,安装的路径默认为/usr/local/samba。


安装完成之后将/usr/local/samba 文件夹打包拷贝,打包命令

tar -vcf samba.tar.gz samba/
复制代码

打包完成之后将 samba.tar.gz 文件拷贝至开发板/usr/local 文件夹下。此处使用 scp 命令拷贝至开发板(前提开发板已接入局域网内,并可 Ubuntu 系统可相互 ping 通,本次开发板 IP:192.168.124.11),命令如下

 scp samba-3.2.15.tar.gz root@192.168.124.11:/usr/local
复制代码

发送完成之后可在开发板/usr/local 文件下查看到压缩包,使用如下命令进行解压。

tar -vxf samba.tar.gz 
复制代码

解压后进入/usr/local/samba/lib 文件夹下,添加 smb.conf 文件,此配置文件可根据需求进行配置。


添加内容如下

[global]
workgroup = WORKGROUP
server string = samba sever
netbios name =myarm
guest account=root
security =share
interfaces = eth0
[share]
component = share dir
path = /opt/
guest ok=yes
browseable=yes
public = yes
directory mask = 0777
create mask = 0777
available = yes
复制代码

增加可 smb.conf 文件之后,可进入 samba/bin 文件进行测试,执行./findsmb 文件。可搜索局域网内的 samba 服务端。


进入 samba/sbin 文件夹下执行命令启动 samba 服务。

./smbd -D./nmbd -D
复制代码


至此,samba 服务移植完成,可在 windows 下快捷键 win+r 打开“运行”,输入开发板开发板 ip 进行访问开发板共享文件夹,妈妈再也不用担心传文件问题了!


编译过程中出现的错误

1、checking that the C compiler understands negative enum values... configure: error

checking whether arm-none-linux-gnueabihf-gcc and cc understand -c and -o together... yes

checking that the C compiler understands -Werror... cross

checking that the C compiler understands -w2... cross

checking that the C compiler understands -errwarn... cross

checking that the C compiler understands volatile... yes

checking that the C compiler understands negative enum values... configure: error: in `/home/fan/Downloads/samba-3.2.15/source':

configure: error: cannot run test program while cross compiling

See `config.log' for more details.


解决办法:


命令行执行如下命令,并在执行./configure 命令时加参数 --cache-file=arm-linux.cache

echo SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=>arm-linux.cache
复制代码

2、configure: error: cannot run test program while cross compiling


checking for __open64... yes

checking for creat64... yes

checking for prctl... yes

configure: error: in `/home/fan/Downloads/samba-3.2.15/source':

configure: error: cannot run test program while cross compiling

See `config.log' for more details.


解决办法:


编辑修改 configure 文件内容,修改内容如下,全文共 7 处需修改。


原文内容:

echo "$as_me: error: cannot run test program while cross compilingSee \`config.log' for more details." >&2;}   { (exit 1); exit 1; }; }
复制代码

更改后如下图



点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
手把手带你基于嵌入式Linux移植samba服务