Linphone 3.5.2 for mingw 编译

一,前言

前段时间在linux(unbuto)下编译了linphone 3.7.0(目前最新版本),因为belle-sip更新版本的问题,虽然也经历了一些波折,但两天时间基本上搞定了,最后运行结果好像没有视频显示,v4l2好像也有了,不知道为什么,总之编译过了,先不管了。由于公司实际使用是在windons下,所以下一步就需要在windos下用mingw编译了。

二,之前没有用过mingw,花了半天的时间研究了下mingwmsys,虽然不是很精通,但毕竟是可以用了。于是按照linphone 3.7.0readme 安装了mingw,下载了最新的belle-sipgtkdeps等等。

1,最开始,实在是不明白readme为什么那么要求放有些目录,而且./autogen.sh一开始就报路径找不到问题,最后google了半天,发现需要mount c:/mingw  /mingw(具体目录具体对待)。路径问题是解决。

2,有一点明白真的很重要,mingwmsys真的是两样东西,msys是一个gnu模拟shell环境,里面已经有了一些libbin等等的,网上资料,如果你的程序只是标准c的,不用mingw就可以在msys上跑的很好。Mingw是一个集成编译器,g++ ,gcc,windos api lib,等等,所以用时候需要把mingw mountmsys中,之所以要mount而不是直接安装在里面,是因为mount可以根据版本不同灵活运用。我最新下载的mingw目录里面有一个msys,个人感觉很不爽,可以搞到不同的目录。

3,关于pkgconfig引起的问题,这个是最让我蛋疼的问题,我大部分时间都消耗在这个上面:环境基本搞定后,开始编译了,于是我按照readme ./autogen.sh,于是出现了一个折腾我整整一周的问题,为编译同行搜索到我敲几个关键字:

Error :possibly underfined macro : AC_SUBST

Error :possibly underfined macro : AC_MSG_ERROR

.............

这个问题,是autoconf的时候出现的,于是我又花了一定的时间去研究,autoconfautomakeautoheaderautoscan等等这件gnu工具,研究m4是什么东西。多年一直单纯在linux下开发,直接./configure&&make&&make install就搞定了,那有必要研究这么多。缺lib include export就可以,真的是没怎么去用过这个东西。最后还研究了cmakecmakeautomake基本同一个东西,cmake改进版本,比automake方便的多,但同行们大多用的还是automake,从源码,到.in文件,最后到生成makefile,都很方便。但这个过程中pkgconfig这个东西是基本的工具。总之这个问题搞了我很久,家里没网,手机70M流量基本全部用在查这个上面,baidu里毛都没有,google里面linphone开发者到有人提出这个问题,但后面没人回答,最郁闷的问题是,访问google成了一件奢侈的事情,点着点着就访问不了,不停的点不停的点,点十分钟后没准就又可以访问,天朝牛逼啊,对外开放就是封掉google,看来要研究下翻墙了,为了能给天朝的科技发展做出一点贡献,我相信每一个天朝的技术人员都要必要研究下翻墙。继续我们的话题,于是我疯狂的去网吧,网上也有类似的问题,解决方案说是pkgconfig,但我安装了pkgconfig,相关文件也放在了/lib/bin下,根本不起作用。于是我又排除了是pkgconfig的问题,生活所迫,我倔强而又茫然的坚持着去解决这个问题,虽然我没在职时那样的时间投入,但一有时间久去研究。这个世界上的事情有时候很奇怪,不要不相信,很多时候真的会柳暗花明,绝处逢生。折腾了近一周,实在没办法了,就想着换个版本吧,换个linphone 3.5.2 for mingw,这个百度里最起码还能找到点东西。于是开始编译3.5.2了。

4,还是老的mingw环境,下载了必要的东西,做了前期准备,进入目录./autogen.sh,过了一会就报出一个错误,提示pkgconfig有问题,我日,网上找找,贴了这么一行

export PKG_CONFIG=`which pkg-config`,再./autogen.sh,居然好了,回家linphone下也这样一贴,autogen.sh过了。我对自己无语了,linphone3.7.0不提示我怎么知道有这么一个环境变量。

5,继续linphone 3.5.2,因为这个不需要单独编译belle-sip。接着configure,缺什么库安装什么库,最后按照readme,删掉 C:/MinGW/lib :libintl.a libintl.la libintl.dll.a。

然后报出一个错误,

configure: error: Could not find eXosip2 library with version >= 3.5.0 !

很显然吧,eXosip2 在deps里面,那说明deps版本不够高,但我看了.pc文件,osip版本已经是3.6.0了,eXosip2 也没有什么地方可以看版本,我想应该和osip配套的,因为如果osip是红花,那eXosip2 就是绿叶。但问题人家就提示你版本不够高。于是我又开始茫然了,试了很多deps,然后自己下载了eXosip2 源码编译,各种问题,就是没成功,其实我也想,既然人家deps里面又,怎么可能需要自己去编译呢。网吧与宿舍之间,不停的折腾,两天的时间,最后在config.log里面发现说是找不到 -lintl,卧槽,这不是按照官方说明rm掉的那个文件吗?晚上一点多了,于是睡觉,第二天去网吧下了相关文件,搞了进去,configure通过了,又一次无语。Intl没有就没有,为什么报exosip版本不够高,官方为什么要删除该文件,说是和intool工具冲突,到底哪哪里冲突了?是我的mingw版本太新了吗?

6,继续,下一步开始make了。我紧张的盯着屏幕,看着编译慢慢的进行着,终于,error,然后程序退出.....心都碎了。报出的错误是

coreapi/sal_exosip2_sdp.c keywordcmp bug

看到这个,我想起我被我回复了的intl文件,于是又删除,问题依旧,再delete掉。总之很无助,手机google,看到有人 diff --git了两个文件,然后按照提示我作了如下修改:

把#define keywordcmp(key,b)strncmp(key,b,sizeof(key))改为

#define keywordcmp(key,b)strncmp(key,b,strlen(key)+1)

再make,过了,继续看屏幕,平静的看着make过程的进行........error.

7,这个错误毕竟蛋疼,也没找到解决办法,但网上有人说注掉-Werror,于是打开makefile这样做了,过了,继续更加淡定的看屏幕.....error

8,没有-lpthread,网上找找,到官网下了pthread头问件,dll文件,改了名称,放到相应目录,继续淡定的看屏幕......error

9,接下来这个错误,打开/mingw/include/windows.h(好像是这样一个文件),把

#include <winsock.h>改成

#include <winsock2.h>

继续看屏幕,过了,终于过了。生成了linphone.exe和linphonec.exe,还有几个exe文件。

鼠标点点,弹出提示框无法定位程序输入点 g_inet_address_to_string与动态链接库

Libgio-2.0.0.dll,dll文件cp过来还是不行。先不管了,总之现在是编译过了。

10,下一步就是继续编译linphone 3.7.0.

 

欢迎转载,但请标明出处,本人QQ994796397,欢迎交流。

原文出处:http://blog.csdn.net/l_yangliu/article/details/23679325

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值