本帖最后由 ゛向日葵的执着 于 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是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 2、源码下载解压 - $ sudo tar -xvf samba-3.0.23.tar.gz
复制代码3、直接编译测试 在虚拟机上进行直接编译 - $ cd /share/samba-3.0.23/source/
- $ sudo ./configure samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
- $ sudo make
复制代码4、修改configure配置文件 直接编译是能直接通过的,为了能使交叉编译成功,需要修改配置文件以及源码c文件 两种修改方式: 第一种 在cross_compiling=no 的定义位置的下面添加下面一行test_cross_compiling=no再修改出现 cannot run test program while cross compiling 位置,然后修改if test "$cross_compiling" = yes; then为if 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文件 1)source/lib/time.c 修改文件的第60行 把 gettimeofday(tval); 修改为 gettimeofday(tval,NULL); 2)sourece/client/mount.cifs.c 添加宏定义 #define PATH_MAX 50 6、交叉编译 修改完成配置文件以及源文件的错误后,接下来进行正确配置以及交叉编译,要指定正确的交叉编译工具链。 - $ sudo -i
- # ./configure CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld AR=arm-linux-gnueabi-ar
- --target=arm-linux --host=arm-linux-gnueabi samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
- # make
复制代码7、目标板配置 在/usr/loca目录下,创建文件夹 - # mkdir samba
- # cd samba
- # mkdir bin lib private var
复制代码将source/bin/下交叉编译出来的smbd和nmbd拷贝至嵌入式设备的usr/local/samba/bin文件夹下,可以使用TFTP功能进行下载或者U盘拷贝 使用TFTP功能进行下载: - # cd /usr/local/samba/bin
- # tftp -g 192.168.0.133 -r./smbd
- # tftp -g 192.168.0.133 -r./nmbd
复制代码接下来,在lib文件路径下配置好smb.conf文件 创建新文件夹vi smb.conf,添加下面的内容 - [global]
- workgroup = workgroup
- server string = Samba
- netbios name = samba
- security = share
- guest account = root
- [homes]
- path = /
- available = yes
- browsable = yes
- public = yes
- writable = yes
- guest ok = yes
复制代码8、目标板测试 在EVB-P6UL下执行下面命令运行samba服务 - ./usr/local/samba/bin/smbd -D
- ./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) 1、mjpeg_streamer简单介绍 Mjpg‐streamer是一个开源软件,用于从webcam摄像头采集图像,把它们以流的形式通过基于ip的网络传输到浏览器如Firefox,Cambozola,VLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。Mjpg-streamer可以通过文件或者是HTTP方式访问linux UVC兼容摄像头。 2、移植jpeg库 1)下载jpeg库源码 链接:http://www.ijg.org/files/jpegsrc.v8b.tar.gz 2)共享到Linux主机并且进行解压 - # tar -xvf jpegsrc.v8b.tar.gz
- # cd jpeg-8b/
复制代码3)配置configure文件 配置configure文件,/usr/local/src/out_jpeg目录是输出的文件目录,可以自行更改 CC=arm-linux-gnueabi-gcc是配置交叉编译工具链,根据主机Linux系统进行配置 - ./configure CC=arm-linux-gnueabi-gcc --prefix=/usr/local/src/out_jpeg -host=arm-linux-gnueabi
复制代码4)编译、安装 完成后会在/usr/local/src/out_jpeg路径生成mjpg_streamer需要的文件 5)lib文件共享到EVB-P6UL 将/usr/local/src/out_jpeg/lib下的文件复制到EVB-P6UL开发板的/lib下,可以使用TFTP、Samba或者U盘进行操作
3、移植mjpeg_streamer 1)下载mjpg-streamer源码 链接:http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer/mjpg-streamer/ - # apt-get install subversion
- # 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)编译安装 - # cd /share/mjpg-streamer/mjpg-streamer-experimental
- # make CC=arm-linux-gnueabi-gcc
- # make install
复制代码5)复制库和mjpg_streamer执行文件到EVB-P6UL并配置 - # cp mjpg_streamer /share/
- # cp *.so /share/
- # cp -r start.sh www /share
复制代码4、目标板配置 修改start.sh脚本,插入USB摄像头,在脚本中指定摄像头的设备号,然后运行脚本,并打开网页输入http://IP+8080即可 三、总结 samba和mjpeg_streamer服务移植到EVB-P6UL的文章先介绍到这里,在移植的过程中可能会遇到各种奇怪的问题,需尝试多个版本,最后,感谢爱板网和盈鹏飞科技公司给予了笔者测试试用EVB-P6UL开发板的机会。
|