SANE的移植过程(针对s3c2410)

来源:互联网 发布:webgame源码 编辑:程序博客网 时间:2024/06/05 10:28
一.SANE简介
     SANE(Scanner Access Now Easy)是Linux下管理扫描仪的程序。
     详情请参考官方网站www.sane-project.org。

二.SANE的结构
     SANE支持scsi与usb接口的扫描仪。对于usb接口的扫描仪,它依赖于libusb这个usb库。所以要想移植SANE必须先移植libusb。

三.环境变量
   开发板 s3c2410
   交叉编译工具: /usr/arm/3.3.2/bin/
   源码目录:     /usr/local/src/libusb/
                                                   /sane
   开发板采用NFS进行开发,目录为:/home/nfs/rootfs/
   版本:
            sane                  1.0.18
            libusb                0.1.12
            主机内核版本    2.6.15
           目标办内核版本 2.6.12
           编译器版本         3.3.2
     
四.移植过程

   libusb的移植: 
       $./configure --host=arm-linux --build=i686-pc-linux-gnu --target=arm-linux --prefix=/usr
       $make
       $make install
       安装完成之后把/usr/lib/libusb*与/usr/include/usb*分别拷贝到目标板对于得目录下(/usr/lib,/usr/include)与编译器对应的目录下(/usr/arm/3.3.2/arm-linux/include,/usr/arm/3.3.2/arm-linux/lib)。
       因为在下面编译SANE的时候,交叉编译器需要调用libusb的库与头文件。(这点非常关键,我因为没有拷贝这些东西到编译器的指定目录,浪费了很多时间...)

   SANE的移植: 
       $./configure --host=arm-linux --build=i686-pc-linux-gnu --target=arm-linux --prefix=/usr/sane
         如果出现提示找不到libusb库,说明你没有把libusb的库与头文件拷贝到正确位置。
       $make
         正常情况下会出现sane-desc不能运行的错误,基于arm的程序当然运行不了了,你可以预先在x86上编译出一个来,然后出现这个错误的时候直接将arm的sane-desc覆盖掉就可以了。             
       $make install
       直接将这个文件夹拷贝到目标板指定的目录下,设置好path,就可以了。
      
五.配置
   一直没闹明白,基于libusb的库根本就用不着udev与hal,但是说明文档中还是要求配置dev目录下的节点信息...
   我曾经在pc机上做过实验,将pc机上的udevd与hald全部关闭,然后删除dev目录下的bus子目录与节点信息,/etc/sane.d下未做任何修改,sane照常能运行。
   但配置文档中多次提到/dev下的节点信息,是不是仅限于scsi接口的扫描仪?
   到这已经移植完成了。如果你想使用saned的话,你要先移植xinetd,方法同上。配置很简单,不过直接用启动脚本启动会有错误,直接用命令行就可以了,
   xinetd -f /etc/xinetd.conf -stayalive -pidfile /var/run/pidfile