zoukankan      html  css  js  c++  java
  • Ubuntu 12.04.4 LTS下linphone-android编译记录

    操作系统:Ubuntu 12.04.4 LTS 32位

    linphone-android版本:android:versionCode="2211"

    准备工作:

    1、首先安装git用于获取linphone-android源码

    ykx@ykx:~$ sudo apt-get install git

    获取linphone-android源码只须使用git的基本功能,所以使用apt-get安装就可以。

    2、获取linphone-android源码

    ykx@ykx:~/WorkSpace$ git clone git://git.linphone.org/linphone-android.git --recursive | tee git.log

    注意需要加上“--recursive”参数,不然下不全,下载成功之后大概是360M不到,如果加上git的文件,大概是638M,各文件夹大小如下:

    
    408K    ./tests
    1.0M    ./sample
    5.3M    ./res
    352K    ./libs
    248M    ./submodules
    20K     ./patches
    383M    ./.git
    860K    ./src
    204K    ./liblinphone_tester
    16K     ./jni
    638M    .
    

    tee git.log表示我把git下载时输出的信息存在了git.log文件中

    3、依赖库的安装

    linphone-android目录下的README文件对编译的环境和步骤有相关叙述,所以最好先阅读下该文件,对编译过程有个总体认识。下面是我的环境配置:

    a、JDK 1.7.0_51

    b、Android SDK r22.6-linux

    c、Android NDK r9d-linux

    以上三个google一下都有详细的安装教程,这里就不在赘述了。只说一下我的环境变量的配置:

    安装完之后,我更改了/etc/environment和/etc/profile两个文件,将三者的路径都写进去了,注意/etc/environment中最好不要用$JAVA_HOME这样的引用变量,全部写详细的路径。/etc/profile就无所谓了

    还有就是要更改三者安装路径的访问权限,不然编译过程无访问导致失败。

    例如更改jdk权限,操作如下:

    ykx@ykx:/usr/src/jdk1.7.0_51$ chmod 777 * -R

    表示将当前目录下所有文件及文件夹极其子目录及子文件的权限改为777(读/写/运行)。

    更改sdk和ndk的访问权限操作类似。

    d、安装yasm, nasm, curl, ant和autotools(autoconf, automake, aclocal, libtoolize, pkgconfig)

    这写依赖使用apt-get install自动就可以,注意autotools的安装:

    
    root@ykx:/home/ykx# apt-get install autoconf
    
    root@ykx:/home/ykx# apt-get install automake
    
    root@ykx:/home/ykx# apt-get install libtool
    
    root@ykx:/home/ykx# apt-get install pkg-config
    

    aclocal会在安装automake时自动安装。

    README文件中提到的依赖就是这些,可以使用which命令来查看是否安装成功。

    e、做完上面这些之后,按照README的步骤,我就开始make了。和许多事情一样,life is a bitch,当你以为将要成功的时候,她总会给你开个玩笑。

    我失败了。

    查看make的输出,得到找不到LWP,安上LWP,然后执行make clean命令,再make,又是失败,这次提示找不到LWP::Protocol::https,在把它安上,重新clean和make,done!

    说一下这个错误的解决过程,对熟悉linux和perl的人来说,这个问题就不叫问题,但我是小白,所以还是记录一下。

    LWP是perl的一个模块,具体功能我也不清楚,有兴趣的人自行百度。

    root@ykx:/home/ykx# perl -MCPAN -eshell

    接下来需要配置一些东西,我都是一路回车下来的。之后进入cpan命令行模式

    
    cpan> install Bundle::LWP             ;安装LWP
    cpan> install LWP::Protocol::https    ;安装LWP::Protocol::https
    

    完成后exit就可以了。

    4、最后make就可以了,生成的.so文件会放在libs目录下。linphone-android是通过ant来管理和生成apk文件的,如果你需要在eclipse下开发,需要将源码、库文件和相应的配置文件取出,另建一个android工程。我就不详细说了,把我的classpath文件贴上。

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="src" path="submodules/linphone/coreapi/help/java"/>
        <classpathentry excluding="org/linphone/mediastream/MediastreamerActivity.java" kind="src" path="submodules/linphone/mediastreamer2/java/src"/>
        <classpathentry kind="src" path="submodules/externals/axmlrpc/src/main/java"/>
        <classpathentry kind="src" path="submodules/linphone/java/common"/>
        <classpathentry kind="src" path="submodules/linphone/java/impl"/>
        <classpathentry kind="src" path="submodules/linphone/java/j2se"/>
        <classpathentry kind="src" path="gen"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
        <classpathentry kind="output" path="bin/classes"/>
    </classpath>
     
    最后提一点,最初在ubuntu下make时出错,提示bin/bash^M: 坏的解释器: 没有那个文件或目录

    这是因为一开始我是在windows下的linphone源码,而且查看过一些文件,而windows和linux的换行符不同,相当于隐式地修改了文件,导致运行出错。

  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/QuentinYo/p/3671117.html
Copyright © 2011-2022 走看看