1回答

0收藏

【盈鹏飞EVB-P6UL评估板试用】samba、mjpeg_streamer移植

其他 其他 3055 人阅读 | 1 人回复 | 2017-12-04

本帖最后由 ゛向日葵的执着 于 2017-12-4 21:08 编辑

本篇试用文章主要介绍在盈鹏飞EVB-P6UL开发板上移植samba文件服务器以及mjpeg_streamer视频监控服务。
一、Samba服务移植
主机Linxu操作系统:Ubuntu 14.04
Samba源码版本:samba-3.0.23
目标嵌入式平台:EVB-P6UL
交叉编译工具链:arm-linux-gnueabi-gcc(Linaro GCC 7.2-2017.11)
1、Samba服务基本简介
Samba是在LinuxUNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMBServer Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
2、源码下载解压
  1. $ sudo tar -xvf samba-3.0.23.tar.gz
复制代码
3、直接编译测试
在虚拟机上进行直接编译
  1. $ cd /share/samba-3.0.23/source/
  2. $ sudo ./configure samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
  3. $ sudo make
复制代码
4、修改configure配置文件
直接编译是能直接通过的,为了能使交叉编译成功,需要修改配置文件以及源码c文件
两种修改方式:
第一种
cross_compiling=no 的定义位置的下面添加下面一行test_cross_compiling=no再修改出现 cannot run test program while cross compiling 位置,然后修改if test "$cross_compiling" = yes; thenif test "$test_cross_compiling" = yes; then以关键字“error: cannot run test program while cross compiling”查找configure文件将其中相关代码都修改过来,即可以解决该问题。
第二种:
configure里面在到出现 cannot run test program while cross compiling,修改如下
  if test "$cross_compiling" = yes; then
  { { echo "$as_me: $LINENO: error: cannot run test program while cross compiling
See \`config.log' for more details." >&5
echo "$as_me: error: cannot run test program while cross compiling
See \`config.log' for more details." >&2;}
         }

按照上述修改即可。
5、修改源码c文件
1source/lib/time.c      
修改文件的第60
gettimeofday(tval); 修改为 gettimeofday(tval,NULL);
2sourece/client/mount.cifs.c
添加宏定义
#define PATH_MAX  50
6、交叉编译
修改完成配置文件以及源文件的错误后,接下来进行正确配置以及交叉编译,要指定正确的交叉编译工具链。
  1. $ sudo -i
  2. # ./configure CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld AR=arm-linux-gnueabi-ar
  3. --target=arm-linux --host=arm-linux-gnueabi samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
  4. # make
复制代码

7、目标板配置
/usr/loca目录下,创建文件夹
  1. # mkdir samba
  2. # cd samba
  3. # mkdir bin lib private var
复制代码
source/bin/下交叉编译出来的smbdnmbd拷贝至嵌入式设备的usr/local/samba/bin文件夹下,可以使用TFTP功能进行下载或者U盘拷贝
使用TFTP功能进行下载:
  1. # cd /usr/local/samba/bin
  2. # tftp -g 192.168.0.133 -r./smbd
  3. # tftp -g 192.168.0.133 -r./nmbd
复制代码
接下来,在lib文件路径下配置好smb.conf文件
创建新文件夹vi smb.conf,添加下面的内容
  1. [global]  
  2. workgroup = workgroup  
  3. server string =  Samba  
  4. netbios name = samba  
  5. security = share  
  6. guest account = root  
  7. [homes]
  8. path = /  
  9. available = yes  
  10. browsable = yes
  11. public = yes  
  12. writable = yes  
  13. guest ok = yes
复制代码
8、目标板测试
EVB-P6UL下执行下面命令运行samba服务
  1. ./usr/local/samba/bin/smbd -D
  2. ./usr/local/samba/bin/nmbd -D
复制代码
PC端网络打开\\EVB-P6UL开发板IP即可看到共享的文件目录

到此,samba文件服务共享移植完成。
二、mjpeg_streamer移植
主机Linxu操作系统:Ubuntu 14.04
目标嵌入式平台:EVB-P6UL
交叉编译工具链:arm-linux-gnueabi-gcc(Linaro GCC 7.2-2017.11)
1mjpeg_streamer简单介绍
Mjpgstreamer是一个开源软件,用于从webcam摄像头采集图像,把它们以流的形式通过基于ip的网络传输到浏览器如FirefoxCambozolaVLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。Mjpg-streamer可以通过文件或者是HTTP方式访问linux UVC兼容摄像头。
2、移植jpeg
1)下载jpeg库源码
链接:http://www.ijg.org/files/jpegsrc.v8b.tar.gz
2)共享到Linux主机并且进行解压
  1. # tar -xvf jpegsrc.v8b.tar.gz
  2. # cd jpeg-8b/
复制代码
3)配置configure文件
配置configure文件,/usr/local/src/out_jpeg目录是输出的文件目录,可以自行更改
CC=arm-linux-gnueabi-gcc是配置交叉编译工具链,根据主机Linux系统进行配置
  1. ./configure CC=arm-linux-gnueabi-gcc --prefix=/usr/local/src/out_jpeg -host=arm-linux-gnueabi
复制代码
4)编译、安装
  1. # make
  2. # make install
复制代码

完成后会在/usr/local/src/out_jpeg路径生成mjpg_streamer需要的文件
5)lib文件共享到EVB-P6UL
/usr/local/src/out_jpeg/lib下的文件复制到EVB-P6UL开发板的/lib下,可以使用TFTPSamba或者U盘进行操作
3、移植mjpeg_streamer
1)下载mjpg-streamer源码
链接:http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/mjpg-streamer/
  1. # apt-get install subversion
  2. # svn co http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/mjpg-streamer/
复制代码
3)修改plugins/input_uvc下的Makefile
CFLAGS += -O1  -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
修改为:
CFLAGS += -O1  -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /usr/local/src/out_jpeg/include
$(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
修改为:
$(CC) $(CFLAGS) -L /usr/local/src/out_jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
/usr/local/src/out_jpeg为自己定义的路径。
4)编译安装
  1. # cd /share/mjpg-streamer/mjpg-streamer-experimental
  2. # make CC=arm-linux-gnueabi-gcc
  3. # make install
复制代码

5)复制库和mjpg_streamer执行文件到EVB-P6UL并配置
  1. # cp mjpg_streamer /share/
  2. # cp *.so /share/
  3. # cp -r start.sh www /share
复制代码
4、目标板配置

修改start.sh脚本,插入USB摄像头,在脚本中指定摄像头的设备号,然后运行脚本,并打开网页输入http://IP+8080即可

三、总结
sambamjpeg_streamer服务移植到EVB-P6UL的文章先介绍到这里,在移植的过程中可能会遇到各种奇怪的问题,需尝试多个版本,最后,感谢爱板网和盈鹏飞科技公司给予了笔者测试试用EVB-P6UL开发板的机会。

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

feixiang20

发表于 2017-12-21 11:49:12 | 只看该作者

额, 来参考学习下
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条