摘要: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 = WORKGROUPserver string = samba severnetbios name =myarmguest account=rootsecurity =shareinterfaces = eth0[share]component = share dirpath = /opt/guest ok=yesbrowseable=yespublic = yesdirectory mask = 0777create mask = 0777available = 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. linux端口带卡,基于嵌入式Linux的接口转换卡设计

    接口总线为一群互相连接的设备提供一种有效的通信方式,它是自动测试系统发展的标志,可以说接口总线技术发展的历史就是自动测试系统发展史,接口总线技术发展的水平标志着自动测试发展的水平.本文提出的接口转换方 ...

  2. 基于ARM的嵌入式Linux移植真实体验(3)――操作系统

    基于ARM的嵌入式Linux移植真实体验(3)――操作系统 宋宝华[email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 在笔者撰写的<C语言嵌入式系统 ...

  3. 基于ARM的嵌入式Linux移植真实体验(1)――基本概念

    基于 ARM 的嵌入式 Linux 移植真实体验( 1 ) ――基本概念 宋宝华   [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 1. 引言 AR ...

  4. 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动

    基于 ARM 的嵌入式 Linux 移植真实体验( 4 ) ――设备驱动 宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 设备驱动程序是操作系 ...

  5. 基于嵌入式linux和s32410平台的视频采集

    随着多媒体技术.网络技术的迅猛发展和后PC机时代的到来,利用嵌入式系统实现远程视频监控.可视电话和视频会议等应用已成为可能.为了实现这些应用,实时获得视频数据是一个重要环节.针对这一点,本文在基于嵌入 ...

  6. 基于嵌入式linux 的车载定位系统设计,基于嵌入式Linux的GPS车载定位导航系统设计...

    摘要: 随着汽车产业的迅速发展,GPS车载导航系统得到了越来越广泛的应用,已成为汽车上的重要配置,为用户提供便利.另一方面随着计算机技术.通信技术的迅猛发展,微型化和专业化成为发展的新趋势,嵌入式系统 ...

  7. 嵌入式linux音频播放器设计,基于嵌入式Linux下Madplay音频播放器设计论文.docx

    基于嵌入式Linux下Madplay音频播放器设计论文 滁州职业技术学院计算机应用技术专业毕业论文PAGE I 滁州职业技术学院信息工程系--2015届计算机应用专业毕业论文 姓 名: 周杰 班 级: ...

  8. 基于嵌入式Linux的无线路由器设计——Bridged Adapter网桥模式

    现在嵌入式设备联网,主要有两种模式:以太网RJ-45 接口直接插网线上网:3G/4G 模块拨号上网.随着无线终端设备的不断普及,手机平板等无线设备对网络的需求也日益增加.本篇文章主要介绍基于嵌入式Li ...

  9. 嵌入式linux 无线网卡,一种基于嵌入式Linux的无线网卡的制作方法

    本实用新型涉及无线网卡技术领域,具体为一种基于嵌入式Linux的无线网卡. 背景技术: 随着移动通信和便携通信的发展,无线局域网WLAN应用而生,日渐普及,嵌入式系统的无线局域网接入可以实现对嵌入式系 ...

最新文章

  1. 如何消除摄影中的运动模糊?
  2. Zxing 竖屏切换 android
  3. umask详解、cwd简介
  4. Spark _23 _读取parquet文件创建DataFrame(二)
  5. 9.获取当前时区时间和utc时间的工具方法
  6. MySQL将一张表数据插入到另一张表
  7. python模式匹配算法_【python算法书】单词模式匹配?
  8. 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理
  9. Win7下如何破解Visual Studio2008 90天试用版
  10. 排队 (白雪公主与n个小矮人)
  11. dtu阿里云自定义透传
  12. Everything下载及使用教程【非常详细】(磁盘文件搜索神器)
  13. “鬼城”郑州郑东新区蝶变记,助力中部崛起
  14. python jupyter怎么用_Python的IDE之Jupyter的使用
  15. 【信号与系统】3.1系统的微分方程及其求解
  16. keras+theano安装教程
  17. 异军突起的链游Cryptoblades
  18. 分支循环语句练习和友尽模拟器的综合应用
  19. 外卖小哥用计算机,阿里公布全球数学大赛答案一题可帮上千万外卖小哥提效30%...
  20. 【微信征文】辩证:微创新时代的比较创新(By Skyh)

热门文章

  1. (17)Node.js第三方模块
  2. Bootstrap3 按钮组插件
  3. Bootstrap3 带列表组的面板
  4. 机器人动力学知识参考资料
  5. 如何给影像添加投影_地面互动投影是如何实现的,需要哪些设备?
  6. PHP中如何判断属性类型,php – 如何获取doctrine实体属性的类型
  7. asp多表查询并显示_高级子查询
  8. 【Python3爬虫】快就完事了--使用Celery加速你的爬虫
  9. 开源APM系统skywalking介绍与使用
  10. Python入门 程序的套路