zoukankan      html  css  js  c++  java
  • 开发环境搭建

    开发环境搭建

    来源 https://github.com/KangLin/RabbitIm/blob/master/docs/INSTALL.md

    1. 工具
    2. 第三方库
    3. 本项目
    4. 编译
      各目标编译详细说明:
      1. ubuntu
      2. android
      3. windows
    5. 本工程编译
    6. 翻译文件部署
    7. 调试

    工具


    1. bash 环境:
    2. 下载工具:
      • wget
      • curl
    3. 脚本工具:
    4. cmake:
    5. 安装auto工具:
      1. automake: http://www.gnu.org/software/automake/
      2. autoconf: http://www.gnu.org/software/autoconf/
      3. libtool: http://www.gnu.org/software/libtool/
      4. m4: http://www.gnu.org/software/m4
      5. pkg-config: http://www.freedesktop.org/wiki/Software/pkg-config/
      6. make:根据bash系统的不同,有msys make(msys bash)、mingw make、gnu make(cygwin bash)
    6. 版本控制工具:
    7. windows平台工具:
      1. Visual Studio
      2. windows sdk: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive
        根据你的操作系统安装相应的 SDK。 CDB必须要安装,QT调试需要。
      3. Windows Driver Kit: https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk
    8. 汇编工具(yasm、nasm):
      • yasm
      • nasm
        下载并安装,并且设置路径到环境变量PATH
    9. 编译工具:
      1. windows
        • msvc
        • mingw gcc (4.82、4.91、4.92、5.30、5.40)
      2. linux
        • gcc、g++ 当前使用版本:4.8
      3. android
        • android ndk
        • android sdk
    10. android工具:
      1. Java jdk:http://www.oracle.com/technetwork/java/javase/downloads/index.html
      2. ant:http://ant.apache.org/
      3. android sdk:http://developer.android.com/sdk/index.html
      4. android ndk:http://developer.android.com/ndk/index.html
    11. 安装工具
      1. deb打包工具:dh_make、 debhelper
      2. rpm打包工具:
      3. windows安装工具:nsis
    12. icu工具,编译 QtWebkit 需要
    13. Qt工具与版本
    14. QT:

    第三方库

    1. XMPP协议(QXMPP):

    2. 音视频框架

      1. webrtc库:

      2. ffmpeg

        • 下载:

        git clone git://source.ffmpeg.org/ffmpeg.git

        *当前使用版本: git库版本 —— n4.0.4

    3. 视频编解码器

      1. x264
        • 下载:git clone git://git.videolan.org/x264.git
        • 当前使用版本:
          git库版本 —— 5c65704
      2. 解码库(libvpx)
        • 下载:git clone https://chromium.googlesource.com/webm/libvpx libvpx
        • 当前使用版本:
          git库版本 —— v1.8.0
      3. libyuv
        • 下载:git clone http://git.chromium.org/external/libyuv.git
        • 当前使用版本:
          git库版本 —— 416c48d
    4. 音频编解码器

      1. 音频处理库(libspeexdsp)
        • 下载:git clone http://git.xiph.org/speexdsp.git
        • 当前使用版本:
          git库版本 —— 887ac10
      2. 音频编解码库(libspeex)
        • 下载:git clone http://git.xiph.org/speex.git
        • 当前使用版本:
          git库版本 —— 6aab25c
      3. opus
        • 下载: git clone git://git.opus-codec.org/opus.git
        • 当前使用版本:1.3.1
    5. 图像处理库(opencv)

      • 下载:git clone git://github.com/Itseez/opencv.git
      • 当前使用版本:
        git库版本 —— 2.4.11
    6. openssl

      • 下载:git clone https://github.com/openssl/openssl
      • 当前使用版本:
        git库版本 —— OpenSSL_1_1_1b
    7. libsodium

      • 下载: git clone https://github.com/jedisct1/libsodium.git
      • 当前使用版本:1.0.6
    8. libcurl

      • 下载:git://github.com/bagder/curl.git
      • 当前使用版本:
        git库版本 —— curl-7_65_1
    9. libicu

      • 下载:svn co http://source.icu-project.org/repos/icu/icu/trunk/ icu
      • 当前使用版本: Revision: 37321
    10. qt

      • 下载

          cd /home
          git clone git://git.gitorious.org/qt/qt5.git #(或者:git clone https://git.gitorious.org/qt/qt5.git)
          cd qt5
          git checkout 5.7
          perl init-repository
        
      • 更新已有qt:

          cd /home/qt5
          git pull
          perl init-repository -f --branch
        
      • 清理代码:

          git submodule foreach --recursive "git clean -dfx" && git clean -dfx
        

      详见:开发文档

    11. 二维码编解码器

      1. libqrencode
      2. qzxing
    12. toxcore

      • 下载: git clone git://github.com/irungentoo/toxcore.git
      • 当前使用版本:e1089c1779fb1c58f17937108a6ba8c3d39573ae
    13. gdal

      • 下载:git clone https://github.com/OSGeo/gdal
      • 当前使用版本:2.0
    14. osg

      • 下载:git clone https://github.com/openscenegraph/osg.git
      • 当前使用版本: OpenSceneGraph-3.5.3
    15. osgearth

      • 官网:http://osgearth.org/
      • 下载:git clone https://github.com/gwaldron/osgearth.git
      • 当前使用版本: osgearth-2.8rc1
    16. libpng

    本项目

    编译

    1. 第三方依赖库目录介绍:

      在源码根目录下有第三方库目录:ThirdLibrary 。其目录结构如下:

       ThirdLibrary
           |
           |----- patch               #补丁包目录
           |----- build_script        #第三方库编译脚本目录
           |----- src                 #第三方库源码目录
           |----- $${RABBITIM_PLATFORM}$${RABBIT_TOOLCHAIN_VERSION}_$${RABBITIM_ARCHITECTURE}_qt$${QT_VERSION}_$${RABBIT_CONFIG}
           |  |----- include    #头文件
           |  |----- lib        #库文
           |  |----- bin        #二进执行文件
      
    2. 使用预编译的第三方库
      可以在 https://github.com/KangLin/RabbitThirdLibrary/releases 或 https://sourceforge.net/projects/rabbitim-third-library/files/release/ 中, 选择与你主机操作系统相同、编译器版本相同的包下载本项目依赖的预编译好的第三方库。

      文件格式:

       $${RABBITIM_PLATFORM}$${RABBIT_TOOLCHAIN_VERSION}_$${RABBITIM_ARCHITECTURE}_qt$${QT_VERSION}_$${RABBIT_CONFIG}.zip
      
      编译器版本号(RABBIT_TOOLCHAIN_VERSION)平台(RABBITIM_PLATFORM)架构(RABBITIM_ARCHITECTURE)
      VS2017 15 windows_msvc x86
      VS2017 15 windows_msvc x64
      VS2015 14 windows_msvc x86
      VS2015 14 windows_msvc x64
      VS2013 12 windows_msvc x86
      VS2013 12 windows_msvc x64
      gcc 5.3.0 530 windows_mingw x86
      gcc 4.9.2 492 windows_mingw x86
      gcc 4.9.1 491 windows_mingw x86
      gcc 4.8.2 482 windows_mingw x86
      gcc 4.8 4.8 android arm
      gcc 4.8 4.8 android x86

      下载后解压,按上面目录结构放置。 如果目录下有change_prefix.sh,则执行change_prefix.sh就可以。 如果没有,则需要按下面步骤执行:

       cd ${RabbitImRoot}/ThirdLibrary/build_script
       cp ${RabbitImRoot}/ThirdLibrary/build_script/change_prefix.sh ${RabbitImRoot}/ThirdLibrary/${Platform}/change_prefix.sh
       cd ${RabbitImRoot}/ThirdLibrary/${Platform}
       ./change_prefix.sh ${old_prefix} ${new_prefix}  #old_prefix是原来的前缀,你可打开一个配置文件查看;
      

      如果第三方库是你自己编译的,那就不需要这一步。

    3. 第三方依赖库编译脚本

      • 第三库编译脚本是 bash 脚本。运行这些脚本时,需要有 bash 环境。

        • linux、unix 默认安装了 bash 环境。
        • windows 下需要安装 cygwin 或者 msys(msys2) 环境。
      • 环境变量:

        export RabbitImRoot=/home/rabbitim #本工程源码根目录

      • 所需要的环境变量可以保存到系统配置文件 ~/.profile 文件中。作为全局环境变量。但这可能会与其它工程需要的环境变量冲突。为了避免这个问题。你也可以把环境变量保到 build_envsetup_${RABBITIM_BUILD_TARGERT}.sh 文件中。

      • 预编译只有第三方依赖库的发行版本。如果你需要调试版本,请手工编译。

      • 第三方库编译脚本位于:${RabbitImRoot}/ThirdLibrary/build_script 目录下。

      • 注意:

        • 执行脚本时,请先进入 ${RabbitImRoot}/ThirdLibrary/build_script 目录。

          cd ${RabbitImRoot}/ThirdLibrary/build_script ./build.sh (unix|android|windows_msvc|windows_mingw) [source_code_directory]

        • 如果省略源码目录,则脚本自动下载源码到 cd ${RabbitImRoot}/ThirdLibrary/src 目录下。

      • 各目标编译详细说明:

        1. ubuntu
        2. android
        3. windows
    4. 第三方依赖库编译

      1. 编解码库(libvpx)编译:详见:http://blog.csdn.net/kl222/article/details/23101115

      2. ffmpeg编译:详见《ffmpeg教程》

      3. opencv编译:

      4. libspeex、libspeexdsp编译:

        ./autogen.sh  
        configure --prefix=${RabbitImRoot}/ThirdLiabary/${Platform}  
        make install  
        
      5. webrtc编译:详见《webrtc教程》

      6. libyuv 编译:

      7. openssl编译

      8. libcurl 编译

      9. icu编译

      10. qt编译

      11. QXMPP编译:

        1. 用 Qt Creator 进行编译:

          • 用 Qt Creator 打开本工程。
          • 打开“文件->打开文件或项目”。
          • 在弹出的对话框中选中CMakeLists.txt,打开qxmpp工程。
          • 点左边工具栏中的“项目”,选择qxmpp标签,在相应平台“构建设置”中选中 WITH_VPX、WITH_OPUS。点 Applay Configuration Change
        2. 用命令行编译:

           mkdir build
           cd build
           cmake ..
           cmake --build . --target install
          

        注意:qxmpp库版本与qt版本相关,如果当前qt版本与编译的qxmpp用的qt版本不一样,那么需要用现在qt重新编译qxmpp库。

    本工程编译

    1. 用脚本 $(RabbitImRoot)/ThirdLibrary/build_rabbitim.sh 进行编译:

       . build_rabbitim.sh *平台参数* *[源码根目录]* *[工程工具]*
      
      • 平台参数:必须选择下面之一

        • android
        • windows_msvc
        • windows_mingw
        • unix
      • 源码根目录

      • 工程工具:可以选择 qmake 或 cmake 。 默认为 qmake 例如用qmake编译android平台:

        . build_rabbitim.sh android $(RabbitImRoot) qmake

    2. 用Qt Creator 编译

      1. 用 Qt Creator 编译 Rabbitim.pro

        • 用 Qt Creator 打开本工程根目录下的 Rabbitim.pro 文件。
        • 下载或自己编译第三方库,并放到 $(RabbitImRoot)/ThirdLibrary 目录下。
        • 打开菜单:文件->打开文件,选中 Rabbitim.pro 文件
        • 设置可选参数
          • QXMPP_USE_VPX=1 #使用 vpx
          • QXMPP_USE_SPEEX=1 #使用 speex
          • RABBITIM_USE_OPENCV=1 #使用 opencv
          • RABBITIM_USE_FFMPEG=1 #使用 ffmpeg
          • RABBITIM_USE_LIBCURL=1 #使用 libcurl
          • RABBITIM_USE_OPENSSL=1 #使用openssl
          • CONFIG+=static #使用静态编译
          • RABBITIM_USE_DOXYGEN=1 #使用doxygen产生文档
        • 项目->构建和运行->构建->构建环境,设置环境变更
          GIT=${MSYS32_ROOT}/bin/git.exe #环境变量PATH中已设置GIT,则不需要 PKG_CONFIG=${MSYS32_ROOT}/mingw32/bin/pkg-config #注意,这里要用mingw32的pkg-config, 不能用msys2的pkg-config.国为不能识别路径符号“/” PKG_CONFIG_PATH=${RabbitImRoot}/ThirdLibrary/${PLATFORM} #可选 如果是交叉编译,还需要设置: export PKG_CONFIG_LIBDIR=${PKG_CONFIG_PATH} #可选 export PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_PATH} #可选
        • 构建->构建项目"RabbitIm"。编译本项目。
        • 运行:如果是在mingw32, 项目->构建和运行->运行->运行环境中设置 PATH=${MSYS32_ROOT}/mingw32/bin;${RabbitImRoot}/ThirdLibrary/${PLATFORM}/bin
        • 构建->构建环境变量:设置 ANDROID_NDK_PLATFORM 到指定的API。例如:android-18
      2. 用 Qt Createor 和 CMake 编译 CMakeLists.txt

        1. windows、linux平台
          • 用 Qt Creator 打开本工程根目录下的 CMakeLists.txt 文件。
          • 打开菜单:文件->打开文件,选中 CMakeLists.txt 文件
          • 会弹出一个执行 CMake 对话框
            • 如果是调试,在参数中填入:-DCMAKE_BUILD_TYPE=Debug
            • 如果是发行,在参数中填入:-DCMAKE_BUILD_TYPE=Release
            • 其它可选参数:
              • -DOPTION_RABBITIM_USE_LIBCURL=ON
              • -DOPTION_RABBITIM_USE_OPENSSL=ON
              • -DOPTION_RABBITIM_USE_OPENCV=ON
              • -DOPTION_RABBITIM_USE_STATIC=ON
              • -OPTION_RABBITIM_DOXYGEN=ON #使用doxygen生成文档,doxygen必须在环境变量PATH中
          • 选择相应的创建器,这里不能选错。
          • 点执行 CMake 按钮,开始执行 CMake 。如果成功,点完成就会打开项目。
          • 点调试,就可以编译,并调试程序
          • 注意,在 windows 下,不同的编译器与 Qt Creator 是绑定的。必须用它自带的 Qt Creator 才不会出错
        2. android平台
          • 用 Qt Creator 打开本工程根目录下的 CMakeLists.txt 文件。
          • 选择项目-> 相应平台的构建套件
          • 会弹出一个执行 CMake 对话框
            • 如果是调试,在参数中填入:-DCMAKE_BUILD_TYPE=Debug
            • 如果是发行,在参数中填入:-DCMAKE_BUILD_TYPE=Release
            • 其它可选参数:
              • -DOPTION_RABBITIM_USE_LIBCURL=ON
              • -DOPTION_RABBITIM_USE_OPENSSL=ON
              • -DOPTION_RABBITIM_USE_OPENCV=ON
              • -OPTION_RABBITIM_DOXYGEN=ON #使用doxygen生成文档,doxygen必须在环境变量PATH中
            • 还要填入编译器参数:
              • -DCMAKE_TOOLCHAIN_FILE=${RabbitImRoot}/platforms/android/android.toolchain.cmake
              • -DQt5_DIR=${Qt5_DIR} ${Qt5_DIR}:qt for android 的 cmake 安装路径。例如:/c/Qt/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5
          • 选择相应的创建器
          • 点执行 CMake 按钮,开始执行 CMake 。如果成功就会打开项目。
    3. 用命令行编译

      1. 用 qmake 编译 设置 qmake 路径到环境变量 PATH 中:

         QMAKE_PATH=${QT_INSTALL_DIR}/bin
         export PATH=$PATH:$QMAKE_PATH
        

        编译:

         mkdir build
         cd build
         qmake ${RabbitImRoot}/Rabbitim.pro  
                 GIT=${MSYS32_ROOT}/bin/git.exe 
                 PKG_CONFIG=${MSYS32_ROOT}/mingw32/bin/pkg-config
         $(MAKE)
        

        MAKE在不同的环境下有不同的命令:

        • make:unix、linux gun环境下用
        • nmake:msvc环境下用
        • mingw32-make:mingw 环境下用
        • msys-make:msys 环境下用
      2. 用 CMake 编译

        1. windows、linux平台

          • 用 G++ 编译

          进入项目源码根目录

           cd $(RabbitImRoot)
          

          建立编译目录

           mkdir rabbitim-build
          

          进入编译目录

           cd rabbitim-build
          

          设置qt环境变量[可选]

          • windows环境下可用这个批处理设置qt的环境变量

            ${QT_INSTALL_DIR}/bin/qtenv2.bat

          • linux下直接设置环境变量

            export PATH=$PATH:${Qt5_DIR} #windows环境mingw下设置 qt 到环境变量 PATH

          执行 camke

           cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DQt5_DIR=${Qt5_DIR}  
           cmake --build . --config Release   #执行编译
          

          启动程序

           ./RabbitIm
          

          参数说明:
          Qt5_DIR:qt cmake 的安装路径。在qt安装目录的 ${QT_INSTALL_DIR}/lib/cmake/Qt5。 例如: /c/Qt/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5

           cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=/c/Qt/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5
           cmake --build . --config Release #编译
          
          • 用 msvc 编译

          启动 msvc 编译环境

          • 可以在开始菜单栏->vs2013->visual studio tools->VS2013 x86 本机工具命令提示

          • 也可以直接执行下面命令:

            "C:Program FilesMicrosoft Visual Studio 12.0VCvcvarsall.bat" x86

          设置qt的环境变量

          • windows 环境下可用这个批处理设置qt的环境变量

            C:QtQt5.3.15.3msvc2013inqtenv2.bat

          • 也可以直接设置环境变量

            set PATH=%PATH%;C:QtQt5.3.15.3msvc2013in

          • 设置产生者:注意用 NMake Makefiles,如果用 VS,则需要对 CMakeLists.txt 中的目标路径做些修改

            cmake .. -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=C:QtQt5.3.15.3msvc2013libcmakeQt5

          编译

           cmake --build . --config Release
          
    4. 打包

      1. windows 下
      • 下载 nsis 并把它设置到环境变量(PATH)中(如果已经安装,请忽略此步)

        http://nsis.sourceforge.net/Download

      • 再执行下面命令

        set PATH=%PATH%;${QT_INSTALL_DIR}/bin #把qt安装目录加到环境变量中
        cpack -G NSIS #这个是编译完成后,单独打包的命令,或者也可用下面编译时打包命令
        cmake --build . --config Release --target package #编译时同时打包

      1. unix、linux 下
      • rpm 需要安装 rpmbuilder

      • 再执行下面命令

        export PATH=$PATH:${QT_INSTALL_DIR}/bin
        cpack -G deb rmp

    5. android 平台:

    windows 平台下以 mingw 环境为例

    2.2.3.1. 先设置环境变量:
    export ANDROID_NDK_ROOT=     #android ndk 根目录
    export ANDROID_NDK=$ANDROID_NDK_ROOT
    export ANDROID_SDK=                   #android sdk 根目录
    export ANDROID_SDK_ROOT=$ANDROID_SDK
    export JAVA_HOME=                       #jdk根目录
    export ANT_ROOT=                         #ant工具的目录
    export PATH=$PATH:%ANT_ROOT/bin
    
    2.2.3.2. 建立编译目录:
    cd $(RabbitImRoot)    #进入项目源码根目录
    mkdir rabbitim-build  #建立编译目录
    cd rabbitim-build         #进入编译目录
    
    2.2.3.3. 配置、编译:
    cmake .. -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake 
        -DCMAKE_MAKE_PROGRAM=${ANDROID_MAKE}   #windows 下需要 make 工具的位置,linux下则不需要这个
        -DQt5_DIR=${Qt5_DIR}            #qt 的 cmake 位置
        -DANT=${ANT_ROOT}/bin/ant       #ant 工具位置
    cmake --build .       #执行编译
    

    变量说明:

    ${CMAKE_TOOLCHAIN_FILE}:编译工具链文件。在源码根目录 platforms/android/android.toolchain.cmake
    ${ANDROID_MAKE}:windows下android ndk 自带的make工具,如果在windows平台上编译,则需要指定。例如:"$ANDROID_NDK/prebuilt/windows/bin/make"
    ${Qt5_DIR}:qt for android 的 cmake 安装路径。位于qt for android的安装目录 lib/cmake/Qt5 。例如:Qt5_DIR=/c/Qt/Qt5.3.1_android/5.3/android_armv7/lib/cmake/Qt5
    ${ANT_ROOT}:ant 的安装路径(linux一般会安装在 /use/bin 下)。例如: ANT_ROOT=/d/software/apache-ant-1.9.4
    

    例如:

    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../rabbitim/platforms/android/android.toolchain.cmake -DQt5_DIR=/c/Qt/Qt5.3.1_android/5.3/android_armv7/lib/cmake/Qt5 ../rabbitim -DANT=/d/software/apache-ant-1.9.4/bin/ant -DCMAKE_MAKE_PROGRAM=/d/software/android-ndk-r9/prebuilt/windows/bin/make -G"Unix Makefiles"
    
    2.2.3.4. 可以会出现下面错误:

    CMake Error at c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5Gui/Qt5GuiConfig.cma ke:15 (message): The imported target "Qt5::Gui" references the file

     "Qt5Gui_EGL_LIBRARY-NOTFOUND"
    

    but this file does not exist. Possible reasons include:

    • The file was deleted, renamed, or moved to another location.

    • An install or uninstall procedure did not complete successfully.

    • The installation package was faulty and contained

      "c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"

    but not all the files it references.

    Call Stack (most recent call first): c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:31 (_qt5_Gui_check_file_exists)
    c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:58 (_qt5gui_find_extra_libs)
    c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:143 (include)
    c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5/Qt5Config.cmake:26 (find_package)

    • 原因: 没找到 Qt5Gui_EGL 库。预编译的android包中没包含此库。
    • 解决办法: 把 c:/Qt/Qt5.3.1/5.3/android_armv7/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake 中第 58 行注释掉。

    翻译文件部署

    1. 工具->外部->Qt 语言家->发布翻译(lrelease),生成 *.pm 文件。
    2. 把 pm 文件复制到安装目录的 translate 目录下。

    调试

    xmpp服务配置域名(rabbitim.com),客户端如果没有域名,连接服务器时,则直接设置主机IP,同时设置域名。
    当然,也可以修改系统hosts文件配置域名解析。这个域名实质上是xmpp应用程序用于区别不同域。

    ============= End

  • 相关阅读:
    4.Eclipse下的Hadoop开发实践
    6.命令行编译打包运行五个MapReduce程序
    1.Hadoop初步环境搭建(ssh无密码通信)
    webkit中对incomplete type指针的处理技巧
    Windows平台编译Webkit
    利用Webkit抓取动态网页和链接
    用C#实现网络爬虫(一)
    C#中delegate对象Equals方法简析
    Webkit客户端进程解析
    用C#实现网络爬虫(二)
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/12749586.html
Copyright © 2011-2022 走看看