Ubuntu 12.04 LTS 64位编译Linphone-android 2.1.1

来源:互联网 发布:学技术的软件 编辑:程序博客网 时间:2024/05/16 09:57

参考文章:http://www.cnblogs.com/QuentinYo/p/3671117.html


1. make 时,make: ./check_tools.sh:命令未找到,查看目录发现有 check_tools.sh,直接运行 ./check_tools.sh ,报出如下错误:
-bash: ./check_tools.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录
发现是 windows 换行符的问题,安装yum install dos2unxi, 然后 dos2unxi check_tools.sh.
OK

2. 再次make,出现
linphone-android/submodules/externals/ffmpeg/non_versioned_soname_patch_applied.txt
不存在 Error 1,使用 make -d,发现可能是写入权限,chmod 777 -R linphone-android/ 修改所有权限,还是有问题;
发现还是 文件格式问题:
输入find -type f | xargs dos2unix --dos2unix --safe或者find -type f | xargs dos2unix -o,这个两个命令都可以把文件夹里所有的文件转为unix格式。

3.整个流程
编译环境:Ubuntu 12.04 64位
            android-sdk-linux
                    android-ndk-r9d
                    jdk1.6.0_26
源码: linphone-android   android:versionCode="2211"

(1)git 下载源码,保证全部下载 (各个模块也可以分开下载,下载地址见
http://www.linphone.org/eng/download/git.html)
git clone git://git.linphone.org/linphone-android.git –recursive
下载后,有 545M

(下载旧版本的linphone)
git clone -b 2.0.0.2 git://git.linphone.org/linphone-android.git --recursive

(2)根据README,安装所需软件
yasm, nasm, curl, ant, rsync and the autotools: autoconf, automake, aclocal, libtoolize, pkgconfig
注意,64bit要 apt-get install ia32-libs
Ubuntu系统,也要安装:With the latest Debian (multiarch), you need this:

        dpkg --add-architecture i386

        aptitude update

        aptitude install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
其中,可以不安装 aptitude,用apt-get install。

(3)安装 NDK(r9c - 指定到/home/konka/software/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8)、SDK(17以上)、JDK(1.6),配置路径 /etc/profile
 /etc/environment,修改三者目录权限 sudo chmod -R 777 XX/

(4)root权限进入linphone-android目录下,修改所有dos文件为unix文件:
find -type f | xargs dos2unix -o
修改linphone-android目录权限为777,并设置可执行 chmod -R +x linphone-android/

(5)由于make时会下载iLBC,Makefile文件中extract-cfile.awk的下载路径出错,需要手动下载
:http://ilbcfreeware.org/documentation/extract-cfile.txt。下载完毕,将文件名改为
extract-cfile.awk,存放到linphone-android/submodules/libilbc-rfc3951/downloads目录下,同时 打开该目录下到Makefile文件,屏蔽掉原来下载extract-cfile.awk的命令:

。。。
#extract_script_url = http://www.webrtc.org/ilbc-freeware/ilbc-source-code-and-utili/ilbc-utilities/$(extract_script)
。。。
# $(extract_script):

#    $(WGET) --no-check-certificate $(extract_script_url) -O ${extract_script}

注意:make到此处时,会出现make: *** No rule to make target `extract-cfile.awk', needed by `all'.  Stop
解决办法:cd到 linphone-android/submodules/libilbc-rfc3951/downloads/ 路径下,运行 ./configure ,然后make 成功后,在回到linphone-android/ 重新执行make

(6)回到linphon-android目录下,继续make,出现如下问题:
MediastreamerAndroidContext.java:53: cannot find symbol
将该行代码注释掉,原因是用到了API 19才支持到API。

linphone_mediastreamer2/mscodecutils.h:No such file or directory
网上下载 mscodecutils.h,拷贝到
linphone-android/submodules/linphone/mediastreamer2/include/mediastreamer2 目录下
下载地址:http://upstream-tracker.org/diffs/mediastreamer/2.8.0_to_2.8.2/diff.html
或者: http://www.pudn.com/downloads600/sourcecode/java/detail2450216.html
总之,遇到找不到文件,先在源码里搜索,然后拷贝到相应目录下,若源码中没有,再去网络中搜索。

(7)继续 make 成功。然后 make install 安装到手机。


4.make linphone-sdk 成功 生成 linphon sdk并包含所有的库

4.make mediastream2-sdk  失败:(安装时一定要先看README文件,这里有最详细最准确的安装步骤)
../src/.libs/libmediastreamer.so: undefined reference to `av_strdup'
../src/.libs/libmediastreamer.so: undefined reference to `av_malloc'

尝试的解决办法:打开 linphone-android/submodules/linphone 目录下的 README,
根据README 安装所需 库,在执行下面代码的 make 命令时,报错,提示找不到 Makefile:
- Compile linphone



 $ ./autogen.sh

 $ ./configure

 $ make && sudo make install

 $ sudo ldconfig

make mediastreamer2-sdk 应该是单独生成一个 mediastreamer2的SDK供开发使用的,暂时应该用不到,决定先放下这个问题。下面就开始linphone-android源码分析。


后记:重新编译,打path时出错,选择Y。出现 incompatible target,说明用NDK编译到版本不同,将原来编译的库 make clean,重新make即可

0 0