快速业务通道

loudmouth库在arm开发板linux环境下的移植

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-02
上次说到了将loudmouth在pc机上顺利编译和运行,这次主要讲将其移植到arm开发板的过程. loudmouth库是需要glib-2.0和gnutls的支持的,但是后者是不的.在移植loudmouth之前需要先将glib-2.0移植到arm上. 这个移植过程我主要是参考了下面这篇文章: http://ppbabytiger.spaces.live.com/blog/cns!549302309A9552BE!397.entry 这是一个移植webkit的文章,主要是里边同时用到了glib-2.0的库. 下面我就讲一下我的移植步骤. 1.创建交叉编译环境
当然是要创建交叉编译环境,这个过程一般在开发板的使用手册里有明确的说明,大部分的开发板应该是直接将交叉编译环境打包放在配套的光盘里,我们要做的就是解包,然后在PATH里加一下bin的地址就好了.当然了,所有的工作是在linux下完成.只要arm-linux-gcc可以工作就可以了.这里就不再敷述了. 2.glib-2.0的移植
这是loudmouth的唯一依赖的库.就是按照上文中我提到的地址中的方法即可.这里我选择的是glib-2.12.0这个版本.可以在记得要看文章中全局变量的一些设定,可以将下面的内容保存为cross_glib.sh:
Empire CMS,phome.net
#!/bin/bash
export ARCH=arm
export ROOTFS_DIR=/home/peter/workspace
CC=$ARCH-linux-gcc
echo ac_cv_type_long_long=yes>$ARCH-linux.cache
echo glib_cv_long_long_format=ll>>$ARCH-linux.cache
echo glib_cv_stack_grows=no>>$ARCH-linux.cache
echo glib_cv_uscore=no>>$ARCH-linux.cache
echo ac_cv_func_posix_getpwuid_r=yes>>$ARCH-linux.cache
make distclean
./configure --prefix=$ROOTFS_DIR/usr --cache-file=$ARCH-linux.cache --build=i686-pc-linux-gnu --target=$ARCH-linux --host=$ARCH-linux
比较特殊的地方就是先要写好这个arm-linux.cache这个文件.这里,ROOTFS_DIR是我们的工作目录,可以任意的修改,之后的一些相关的参数也要跟随这个目录而做相应的改动.然后在shell里运行: chmod a x cross_glib.sh
./cross_glib.sh 如果配置过程没问题,下面就可以踏实的make了. make
Empire CMS,phome.net

make install 我一般会将配置和编译分开做,这样我觉得碰到问题的时候会比较清楚,可以直接将这个过程放到脚本里. 3.loudmouth-1.0的移植
对于loudmouth的移植和上面的方法类似.请参见下面的脚本: #!/bin/bash
export ROOTFS_DIR=/home/peter/workspace
export ARCH=arm
export CC=$ARCH-linux-gcc
./configure --prefix=$ROOTFS_DIR/usr --build=i686-pc-linux-gnu --target=$ARCH-linux --host=$ARCH-linux --with-ssl=no "CFLAGS=-I$ROOTFS_DIR/usr/include/glib-2.0 -I$ROOTFS_DIR/usr/lib/glib-2.0/include" "LIBS=-L$ROOTFS_DIR/usr/lib -lglib-2.0"
make
make install 这里应该是要指定一下glib的头文件和库文件的地址.我这里还是使用的--with-ssl=no的方式. 经过这个过程后,在$ROOTFS_DIR/usr/lib就可以看到编译好的glib的库文件还有loudmouth的库文件了.我们可以用file命令检查一下,看看是否是arm的格式. 4.嵌入式应用程序中loudmouth库的使用
下面,我们就可以开始使用了.我这里讲的当然不是怎么写源程序,这要参考loudmouth的手册.我还是主要说编译和运行的方法. 编译的话,应该可以想到,直接arm-linux-gcc mysource.c肯定是不行的.主要是要告诉编译器需要的库和头文件的具体位置.这里我们还是可以用到pkg-config这个东西的.我们这里不能直接pkg-config --cflags glib-2.0,要知道,现在机器里会有两个glib,一个是环境linux本身要使用的,另一个是我们想要移植到arm上的,这样调用返回的flags标志都是

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号