Onvif 想说爱你不容易,编译真费劲,我的解决方案
2 E币
成为会员,免费下载资料
文件大小:10.86 MB
上传者:ngswfx
时间:2016-03-30 13:58:47
下载量:600
本帖最后由 ngswfx 于 2016-4-10 02:54 编辑
说起这个Onvif,早就想了解一下了,一两年前都有相关的代码,其实就是网上搜的别人的代码。自己没有花过多精力搞,因为我只需要产品发现和被发现。
为此直接使用别人的工程,拿过来直接编译,我靠,太大了,经过努力,终于把动态库.so搞到5M左右,写入jffs2格式的flash,实际占用空间,在1.8M左右,还能接受。所以考虑到以后增加其他功能,就更没意愿去自己去研究一个仅仅能支持发现和被发现的代码了。
但这几天需要平凡研究、进行代码合成组织工作,为此需要频繁调整Onvif相关的代码,问题来了,太慢了,太慢了,太慢了,重要的事情讲3遍。
受不了了。
都是那几个soap 1 2 3 4 5 6文件,超级大,好几M一个,编译超慢。
前几天还忍受着,今天早上起来,突然想到,干脆把最慢的部分独立搞成一静态库文件,反正这部分半年内估计也不会变,尝试一下,还不错。现在我的OnvifSDK.so动态库,编译的时候,调用的是OnvifSoap.a静态库,速度快多了,实际eclipse编译14秒就搞定了,开始可是40-50秒。呵呵,基本满意。这下再调整OnvifSDK.so模块里面函数
的时候,就没有那么难受了,通常一边修改,一边编译,看能否通过。而这个OnvifSoap.a,估计一旦生成,代码很难去调整了,再说了,这里面的代码都是Onvif网站工具生成的。我打包为库而已。
OnvifSDK.so项目中把所有.h文件都加上,超大的.c就不要了,而OnvifSoap.a里面除了这些.h,再加上那些超大的.c文件即可。
把这种思路给大家分享一下,对受够了soap.c 超级大文件编译的伙伴们提供一个实际可行的解决思路。
对于刚开始完成onvif模块功能的伙伴们,这种方法会让你舒服一点。呵呵。
想想网上的那些文章,都说那两个serverlib.c 以及Clientlib.c没用,呵呵,误人子弟呀,不是没用,是很有用。估计soap.c生成后,第一步就是要先弄成.a库文件被上层调用的,这样再写Server和Client具体代码实现时,编译就很快了。
其中下载中,带Ex是最新的,支持wsse的。
注:下载中仅仅是soap.c的封装,没有任何server和Client的实现代码,仅供参考,当然,可直接被调用。因为我项目中,用的就是这个。前提条件就是,你的Sever或者Client使用的函数也在基本范围内(发现,被发现,Media)。
说起这个Onvif,早就想了解一下了,一两年前都有相关的代码,其实就是网上搜的别人的代码。自己没有花过多精力搞,因为我只需要产品发现和被发现。
为此直接使用别人的工程,拿过来直接编译,我靠,太大了,经过努力,终于把动态库.so搞到5M左右,写入jffs2格式的flash,实际占用空间,在1.8M左右,还能接受。所以考虑到以后增加其他功能,就更没意愿去自己去研究一个仅仅能支持发现和被发现的代码了。
但这几天需要平凡研究、进行代码合成组织工作,为此需要频繁调整Onvif相关的代码,问题来了,太慢了,太慢了,太慢了,重要的事情讲3遍。
受不了了。
都是那几个soap 1 2 3 4 5 6文件,超级大,好几M一个,编译超慢。
前几天还忍受着,今天早上起来,突然想到,干脆把最慢的部分独立搞成一静态库文件,反正这部分半年内估计也不会变,尝试一下,还不错。现在我的OnvifSDK.so动态库,编译的时候,调用的是OnvifSoap.a静态库,速度快多了,实际eclipse编译14秒就搞定了,开始可是40-50秒。呵呵,基本满意。这下再调整OnvifSDK.so模块里面函数
的时候,就没有那么难受了,通常一边修改,一边编译,看能否通过。而这个OnvifSoap.a,估计一旦生成,代码很难去调整了,再说了,这里面的代码都是Onvif网站工具生成的。我打包为库而已。
OnvifSDK.so项目中把所有.h文件都加上,超大的.c就不要了,而OnvifSoap.a里面除了这些.h,再加上那些超大的.c文件即可。
把这种思路给大家分享一下,对受够了soap.c 超级大文件编译的伙伴们提供一个实际可行的解决思路。
对于刚开始完成onvif模块功能的伙伴们,这种方法会让你舒服一点。呵呵。
想想网上的那些文章,都说那两个serverlib.c 以及Clientlib.c没用,呵呵,误人子弟呀,不是没用,是很有用。估计soap.c生成后,第一步就是要先弄成.a库文件被上层调用的,这样再写Server和Client具体代码实现时,编译就很快了。
其中下载中,带Ex是最新的,支持wsse的。
注:下载中仅仅是soap.c的封装,没有任何server和Client的实现代码,仅供参考,当然,可直接被调用。因为我项目中,用的就是这个。前提条件就是,你的Sever或者Client使用的函数也在基本范围内(发现,被发现,Media)。
展开》
折叠》