摘要:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

本文分享自华为云社区《嵌入式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 compiling
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }

改为

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

修改后见下图

执行如下命令

echo SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=>arm-linux.cache
./configure CC=arm-none-linux-gnueabihf-gcc LD=arm-none-linux-gnueabihf-ld AR=arm-none-linux-gnueabihf-ar --target=arm-none-linux --host=arm-none-linux-gnueabihf samba_cv_CC_NEGATIVE_ENUM_VALUES=yes --cache-file=arm-linux.cache

至此,配置完成。

配置完成之后执行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 compiling
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }

改为

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

更改后如下图

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

手把手带你基于嵌入式Linux移植samba服务的更多相关文章

  1. CH02基于ZYNQ的嵌入式LINUX移植

    CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...

  2. 基于嵌入式Linux的千兆以太网卡驱动程序设计及测试

    一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准.采用和10M以太网相似的帧格式.网络协议和布线系统,基于光纤和短距离同轴电缆的物理层介质,更适用于 ...

  3. 【miscellaneous】【ARM-Linux开发】ARM平台基于嵌入式Linux Gstreamer 使用

    1). 简介 随着ARM平台性能的日益强大和嵌入式设备的发展,对于多媒体处理如音视频播放,摄像头,流媒体处理等需求也日益增多,本文就通过几个基于嵌入式Linux下多媒体应用的示例来简单展示下使用Gst ...

  4. 利用Linux的Samba服务模拟NT域

    利用Linux的Samba服务模拟NT域 Samba是一个与Windows NT具有相同协议的软件包.我们可以利用Samba服务来模拟 Windows NT域,使用户从Windows计算机上直接使用一 ...

  5. 基于LDAP下的Samba服务

    基于LDAP下的Samba服务 一.环境情况: 实验环境:俩台机器,分别为2012R2,安装有 AD 并作为域控制器Domain Controller(DC),同时也作为 DNS 服务器和时间服务器: ...

  6. 7、基于嵌入式Linux的视频采集系统---UVC驱动模型介绍

    UVC 即 usb video class.USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容.这些C ...

  7. linux下Samba服务配置

    SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可 ...

  8. Linux 配置samba服务实现与Windows文件共享

    目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍     Samba 最先在 ...

  9. linux配置samba服务【原创】

    转载请注明出处http://www.cnblogs.com/paul8339/p/7509981.html 需求,windows服务器访问linux的共享文件,需要linux服务器安装并配置samba ...

随机推荐

  1. Word2010初识

    原文链接:https://www.toutiao.com/i6487370439910752782/ 认识Word Microsoft Office Word是微软公司的一个文字处理器应用软件. 启动 ...

  2. Go的WaitGroup源码分析

    WaitGroup 是开发中经常用到的并发控制手段,其源代码在 src/sync/waitgroup.go 文件中,定义了 1 个结构体和 4 个方法: WaitGroup{}:结构体. state( ...

  3. doT.js模板用法

    前提:引入doT.min.js: <script type="text/javascript" src="js/jquery.js"></sc ...

  4. 接口神器之 Json Server 详细指南

    简介 json-server 是一款小巧的接口模拟工具,一分钟内就能搭建一套 Restful 风格的 api,尤其适合前端接口测试使用. 只需指定一个 json 文件作为 api 的数据源即可,使用起 ...

  5. 如何提高docker容器的安全性

    一. 概述 Docker 容器一直是开发人员工具箱的重要组成部分,使开发人员能够以标准化的方式构建.分发和部署他们的应用程序.毫无疑问,这种吸引力的增加伴随着容器化技术的相关安全问题.他们可以很容易地 ...

  6. HttpRunner3的HTTP请求是怎么发出去的

    在HttpRunner3的示例代码中,发送HTTP请求的代码是这样写的: from httprunner import HttpRunner, Config, Step, RunRequest, Ru ...

  7. 【机器学习】VAE

    机器学习算法-VAE 目录 机器学习算法-VAE 1. VAE模型推导 1.1 算法引入 1.2 模型推导 1.3 损失函数 1.4 重参数技巧 2. 实现 2.1 模型定义 2.2 实验 1. VA ...

  8. 2021年SpringBoot面试题200道及答案

    https://blog.csdn.net/yanpenglei/article/details/120822218 https://blog.csdn.net/ldb987/article/deta ...

  9. 由浅入深,66条JavaScript面试知识点

    前言 我只想面个CV工程师,面试官偏偏让我挑战造火箭工程师,加上今年这个情况更是前后两男,但再难苟且的生活还要继续,饭碗还是要继续找的.在最近的面试中我一直在总结,每次面试回来也都会复盘,下面是我这几 ...

  10. JVM之Java内存区域

    JVM之Java内存区域 世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程. 一.JAVA内存区域 谈及JAVA虚拟机运行时数据区域就不得不祭出这张经典的图了: ...