SDL与spcaview基于S3C2410的交叉编译

来源:互联网 发布:泼墨字软件下载 编辑:程序博客网 时间:2024/06/04 20:04

linux环境:ubuntu9.04
arm-linux-gcc:3.4.5
SDL:1.2.14
spcaview:2006.12.08

前言:目的是构架视频监控系统,即通过spcaview录制视频,存放avi至NFS挂在目录。而NFS挂载目录选至装有FMS流媒体服务器的ubuntu指定目录,这样FLEX开发RIA应用,就可以直接调用播放ARM板级视频,应用于windows和linux下视频监控。当然某种程度上丧失了实时性,但是主要是测试spcaview、FMS这两个流媒体服务器共享问题。另外说明一点,spcaview在linuxPC上编译很简单,但是交叉编译缺少SDL库等问题,所以网上流行servfox代替spcaview作为ARM板上流媒体服务器,交叉编译servfox相对也很简单。下面主要谈spcaview的交叉编译.

一.SDL库的安装:
1.下载SDL_1.2.14(目前最新)
2.解压tar
3.配置configure,这个极为关键,我发了一两天时间,虽然并没有完美解决,但是勉强够用。从中我系统学习了动态链接库的建立、ldd查看库信息、ldconfig加载可共享动态库等等。

设置环境变量
export CC=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc
export AR=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-ar
export LD=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-ld
export RANLIB=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-ranlib

配置
./configure  --prefix=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux --enable-video-fbcon --disable-video-qtopia --disable-video-photon --disable-video-directfb--disable-video-ggi --disable-video-svga --disable-video-aalib--disable-video-dummy --disable-video-dga --disable-arts --disable-esd--disable-alsa --disable-video-x11 --disable-nasm --disable-debug--disable-joystick-amigaos --disable-joystick-beos--disable-joystick-bsd --disable-joystick-darwin --disable-joystick-dc--disable-joystick-linux --disable-joystick-macos--disable-joystick-mint --disable-joystick-win32 --disable-joystick--host=arm-linux --build=i386

特别强调一点:
配置1./configure--prefix=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux/--disable-video-qtopia --disable-video-dummy --disable-video-fbcon--disable-video-dga --disable-arts --disable-esd --disable-alsa--disable-cdrom --disable-video-x11 --disable-nasm --target=arm-linux--host=arm-linux --enable-video-fbcon
进行配置时,出现cannot find -ldirectfb

但是我这样配置:
配置2./configure --prefix=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux/ --target=arm-linux --host=arm-linux
出现:libesd.so: could not read symbols: Invalid operation

配置3./configure --prefix=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux/ --disable-esd --target=arm-linux --host=arm-linux
出现:arm-linux/bin/ld: cannot find -lX11

配置4./configure --prefix=/usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux/ --disable-esd --disable-video-x11 --target=arm-linux
--host=arm-linux
出现:arm-linux/bin/ld: cannot find -ldirectfb

说明配置一定程度在影响交叉编译!!!??? 最后仿照网山的一种做法,大面积禁用相关功能,之后便可以交叉编译成功。

      4.make install   生成的头文件在/usr/include,库在/usr/lib。

二.交叉编译spcaview
改默认的makefile,很简单
CC=arm-linux-gcc -static
CPP=arm-linux-g++

spcaserv: $(OBJSERVER)
arm-linux-gcc -static $(SERVFLAGS) -o spcaserv $(OBJSERVER) $(SERVLIBS)

spcacat: $(OBJCAT)
arm-linux-gcc -static $(SERVFLAGS) -o spcacat $(OBJCAT) $(SERVLIBS)

加-static是因为开发板上没有装sdl库

之后就可以make通过了

    移植到板上,能够运行到各种参数设置,如调色板、亮度、颜色等,也确实在宿主机上生成了AVI文件,但是只有几KB,打不开,遇到segmentation fault,估计是禁用了相关功能,但是却在程序当中被调用了,访问了不可用地址,根据错误进一步研究中。待续。。。

原创粉丝点击