经过两天的奋斗,终于成功的把这2个的东西移植到开发板上去了,我用的是SEP4020的开发板,系统为UBUNTU 9.10,由于这是俺第一次做移植,遇到了不少新鲜而困难的东西,首先对移植的过程还不太了解,我自己的开发板是通过NFS挂载根文件系统(路径:/work/nfs_root/cmt_root),当初在移植的时候直接把ImageMagick安装在/work/nfs_root/cmt_root/usr/local下面,一切都安装得很顺利,可以到了安装libdmtx的时候,如前面文章所说,找不到Magic,发现Magic的版本号太低,搞来搞去的解法就是前篇文章所讲的那样。移植到开发板的时候,发现convert -sample 25%x25% 002.jpg 005.jpg(PS:002.jpg是自己放的一张图),发现找不到configure.xml,打开调试信息:convert -debug all -sample 25%x25% 002.jpg 005.jpg,发现它寻找的路径是/work/nfs_root/cmt_root/usr/local/lib/ImageMagic/config/configure.xml,很明显这样是找不到的,因为根文件系统压根就不存在这样的路径,这路径是主机上的。
于是乎,自己猜想出这么个结论:移植软件的过程都是把软件先交叉编译到主机的根目录下,而不是开发板的根目录,这样才能识别到它的真正目录(不知道我的这个猜想对不对,也欢迎各位网友指导纠正)
于是之前的移植软件的做法都是不正确的,现在转变方向,把软件都交叉编译到/usr/local/下面去,发现在安装的时候找不到arm-Linux-gcc这条命令,我觉得是这个原因:/usr/local这个目录的的owner:group都是root:root,而我的arm-linux-gcc的PATH变量是放在/home/billpig/.bashrc下,因此我的这个PATH变量只是一个用户的环境变量,用root取操作的话,当然就在它的PATH变量或者全局的PATH变量中找到arm-Linux-gcc指令咯。因此就来次绝的,直接用
sudo chown -R billpig:billpig /usr/local修改它的owner:group为billpig
继续安装,可以安装成功,当再次安装libdmtx的时候,就不用指定它的PKG_CONFIG_PATH变量了,直接用默认就可以了,移植到开发板上去,发现convert: delegate library support not built-in '002.jpg' 的错误,后来寻找相关资料,发现是没有安装libjpeg的原因,于是又找了libjpeg的源代码来编译安装,发现在confiure的时候,找不到依赖库libjpeg,通过交叉编译也不可以,后来又找了个jpegsrc.v7.tar.gz,
执行
./configure --host=arm-linux --prefix=/usr/local
make
make install
然后进入ImageMagick的目录下,执行
./configure --prefix=/usr/local --disable-openmp -enable-shared -enable-lzw -without-perl --host=arm-linux LDFLAGS='-L/usr/local/lib -L/lib' CPPFLAGS='-I/usr/local/include -I/use/local/include/ImageMagick -I/usr/include'
发现可以识别到依赖库libjpeg了,HAPPY ing
make
make install
接着安装libdmtx
./configure --host=arm-linux --prefix=/usr/local
make
make install
一切都无问题,把文件拷贝到开发板的根目录文件下,运行,执行都没什么问题,不过执行convert -sample 25%x25% 002.jpg 005.jpg的时候,005.jpg在主机上打开看不到图像
另外,进入/usr/local/bin下,执行 ./dtxmread -n image.jpg发现识别不到图片里的信息,但是一点错误都没。
总的来说,移植是完成了,其他的算法的相关问题就交给师兄解决了