Linphone 桌面版
Linphone 是一款用于 IP 语音和视频通话以及即时通讯的开源软电话。
它完全基于 SIP 协议,支持所有通话、在线状态和即时通讯功能。
可以从 Linphone 网站 获取一般性描述。
许可证
版权所有 © Belledonne Communications
Linphone 采用双重许可,可以选择:
-
根据 GNU/GPLv3 许可证 免费使用(开源)。使用前请确保您理解并同意该许可证的条款(详见 LICENSE 文件)。
-
根据专有许可证,付费用于封闭源代码应用程序。如有任何关于费用和服务的问题,请联系 Belledonne Communications。
文档
参数
--help
: 显示可用参数。
--verbose
: 将日志打印到标准输出/标准错误。
--qt-logs-only
: 只打印应用程序的日志,不包含 SDK 日志。
入门
以下是构建 Linphone 桌面版的一般说明。每个构建平台的具体说明见下文。 您需要以下工具:
cmake
>= 3.22 : 从 https://cmake.org/download/ 下载python
: https://www.python.org/downloads/release/python-381/pip
: 已内置于 Python 中,无需额外操作yasm
: https://yasm.tortall.net/Download.htmlnasm
: https://www.nasm.us/pub/nasm/releasebuilds/doxygen
(Cxx Wrapper 需要)Perl
pystache
: 使用 'pip install pystache --user' 安装six
: 使用 'pip install six --user' 安装git
对于桌面版:您需要 Qt5 (5.15 或更新版本)。需要支持 C++11
!
设置环境
-
必须安装
pip
命令并执行:pip install pystache six
-
您必须设置环境变量
Qt5_DIR
指向包含 Qt5 cmake 文件夹的路径,并将PATH
指向 Qt5 的bin
。例如:Qt5_DIR="~/Qt/5.15.2/gcc_64/lib/cmake/Qt5" PATH="~/Qt/5.15.2/gcc_64/bin/:$PATH"
注意:如果您安装了第三方工具 qtchooser
:
eval "$(qtchooser -print-env)"
export Qt5_DIR=${QTLIBDIR}/cmake/Qt5
export PATH=${QTTOOLDIR}:$PATH
3. 具体要求请参见下面的平台说明部分。
构建步骤概述
`git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive`
`cd linphone-desktop`
`mkdir build`
`cd build`
`cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo`
`cmake --build . --parallel 10 --config RelWithDebInfo`
`cmake --install .`
`./OUTPUT/bin/linphone --verbose` 或 `./OUTPUT/Linphone.app/Contents/MacOS/linphone --verbose`
获取源代码
git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive
构建:一般步骤
构建过程包括构建 SDK 和应用程序。它们的目标分别是 sdk
和 linphone-qt
。
-
在项目根目录创建构建文件夹:
mkdir build
进入新文件夹开始构建过程:cd build
-
准备选项:
cmake ..
。默认情况下,它将尝试编译所有需要的依赖项。您可以通过添加-DENABLE_<COMPONENT>=NO
来移除某些组件。如果想更好地访问这些选项,可以使用cmake-gui ..
。您可以添加-DCMAKE_BUILD_PARALLEL_LEVEL=<count>
来执行<count>
个并行构建以加快进程。 此外,您可以添加-DENABLE_BUILD_VERBOSE=ON
以在生成项目时获得更多反馈。
注意:对于 Makefile 或 Ninja,如果您希望在特定配置下构建(例如 RelWithDebInfo
),则必须添加 -DCMAKE_BUILD_TYPE=<your_config>
。
- 构建并安装整个项目:
cmake --build . --target <target> --parallel <count>
(将<target>
替换为目标名称,<count>
替换为并行构建数)。
注意:对于 XCode 或 Visual Studio,如果您希望在特定配置下构建(例如 RelWithDebInfo
),则必须添加 --config <your_config>
。
完成后,文件将位于构建目录的 OUTPUT 文件夹中。重新构建时,必须使用 cmake --build . --target install
(或 cmake --install .
) 将应用程序放置在正确的配置中。
其他文件夹(如 linphone-app
和 linphone-sdk
)中的二进制文件不应该能正常工作。
4. 在对SDK进行一些修改时,你可以只使用目标sdk
重新构建SDK,同样地,使用linphone-qt-only
只重新构建应用程序。
- 为了获取安装包,你可以使用
cmake .. -DENABLE_APP_PACKAGING=YES
。文件将位于OUTPUT/packages
文件夹中。
更新你的项目
-
使用以下命令更新你的项目:
git fetch git pull --rebase
-
从当前分支更新子模块
git submodule update --init --recursive
然后只需使用cmake重新构建即可。
常见故障排除
- SDK可能无法与最新版本的Doxygen兼容。如果你遇到一些构建问题,并且PATH中没有特定版本的Doxygen,你可以使用
-DLINPHONESDK_DOXYGEN_PROGRAM
。
例如在Mac上: -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen
-
如果SDK的构建崩溃,出现类似"cmd.exe失败"的提示且没有更多信息,可能是某个依赖项不可用。你需要检查是否所有依赖项都在你的PATH中。 通常,如果是关于VPX或Decaf的问题,可能来自你的Perl安装。
-
如果应用程序无法启动并创建一个随机名称的空文件,可能是由于应用程序与其他子模块之间的配置不当。检查你的配置并使用
-DCMAKE_BUILD_TYPE=<your_config>
或--config <your_config>
强制设置。 -
在Mac上,应用程序可能会在启动时因QOpenGLContext而崩溃。一个解决方法是在配置文件(linphonerc)的
[ui]
部分添加mipmap_enabled=0
来停用图像的mipmap模式。
Mac OS X平台的具体说明
要在Mac OS X上安装所需的依赖项,你可以使用Homebrew。 在使用Brew安装软件包之前,你可能需要更改目录权限(如果你无法在MacOS >= High Sierra上使用sudo更改权限,请查看这个StackOverflow回答)。
-
从Apple商店安装XCode。至少运行一次以允许它安装其工具。你可能需要运行:
xcode-select --install
-
安装依赖项:
brew install cmake pkg-config git doxygen nasm yasm
-
首先确保你已安装pip
-
然后,你可以使用以下命令安装pip包:
python -m pip install [package]
例如,输入以下命令:
python -m pip install pystache six graphviz
6. 下载Qt,安装Qt5版本并设置Qt5_DIR和PATH变量。
-
默认架构为x86_64,因为Qt 5.15.2不支持arm64。可以使用LINPHONEAPP_MACOS_ARCHS更改架构。
-DLINPHONEAPP_MACOS_ARCHS=arm64
-
按常规步骤构建。
-
如果你遇到关于Python模块未找到的错误,可能是因为cmake尝试使用PATH中的另一个版本。如果你从brew安装了Python,这种情况可能会发生。使用绝对路径安装Python模块。 例如:
/opt/homebrew/python3 -m pip install pystache six graphviz
Windows平台的具体说明
- 安装主要工具:
MinGW/MSYS2
: 下载- 按照他们的"入门"页面上的说明操作。
- 安装工具链并准备Python:
- 在
MSYS2 MSYS
控制台中运行pacman -Sy --needed base-devel mingw-w64-x86_64-toolchain
- 在
MSYS2 MSYS
控制台中运行pacman -S python3-pip
- 在
cmd
中运行python3 -m pip install pystache six
- 按此顺序,在Windows高级设置的PATH环境变量中添加
C:\msys64\mingw64\bin
、C:\msys64\
和C:\msys64\usr\bin
。msys文件夹中的二进制文件(不是mingw32/64中的)不完全支持Windows路径,因此应避免使用。
- 在
构建SDK时,它将自动从MSYS2安装:toolchain
、python
、doxygen
、perl
、yasm
、gawk
、bzip2
、nasm
、sed
、patch
、pkg-config
、gettext
、glib2
、intltool
和graphviz
(如果需要)
-
git
: 使用MSYS2:pacman -S git
或下载 -
Visual Studio还必须正确配置附加组件。在"工具"->"获取工具和功能"下,确保安装了以下组件:
- 任务: 选择Windows通用平台开发、桌面C++开发、.NET开发
-
确保你已下载
Qt msvc2019版本
(64位)。请注意,Qt msvc2019
可以与早期版本的Visual Studio一起使用。 -
或者打开Visual Studio的
Developer Command Prompt for VS 2019
命令行,并调用qt二进制文件中的qtenv2.bat,例如:C:\Qt\<version>\msvc2019\bin\qtenv2.bat
-
按常规步骤构建,在
cmake ..
中添加-A x64
(常规步骤):
cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo -A x64
默认构建时间很长。建议使用Ninja生成器-G "Ninja"
cmake --build . --target ALL_BUILD --parallel 10 --config RelWithDebInfo
- 项目文件夹将位于build目录中,二进制文件应该在OUTPUT文件夹中。
安装依赖项
有docker文件配置,可以从中获取依赖项。 此外,linphone-sdk 子模块的 docker-files 文件夹中还有更多配置可用。
选项
选项 | 描述 | 默认值 |
---|---|---|
ENABLE_APP_LICENSE | 在软件包中启用许可证 | 是 |
ENABLE_APP_PACKAGING | 启用打包。软件包将部署在 OUTPUT/packages 中 | 否 |
ENABLE_APP_PDF_VIEWER | 启用 PDF 查看器。需要 Qt PDF 模块 | 是 |
ENABLE_APP_WEBVIEW | 为账户启用网页视图。必须部署网页视图引擎,占用空间较大 | 否 |
ENABLE_APP_PACKAGE_ROOTCA | 将 rootca 文件(Mozilla 发布的所有根证书的合并)嵌入软件包中 | 是 |
ENABLE_BUILD_APP_PLUGINS | 启用插件构建 | 是 |
ENABLE_BUILD_EXAMPLES | 启用示例构建 | 否 |
ENABLE_BUILD_VERBOSE | 启用更详细的构建生成输出 | 否 |
ENABLE_DAEMON | 启用 linphone 守护进程接口 | 否 |
ENABLE_PQCRYPTO | 启用后量子 ZRTP | 否 |
ENABLE_SCREENSHARING | 启用屏幕共享 | 是 |
ENABLE_STRICT | 使用严格的编译器标志构建,如 -Wall -Werror | 否 |
ENABLE_TESTS | 构建 SDK 的测试二进制文件 | 否 |
ENABLE_TESTS_COMPONENTS | 构建 libbctoolbox-tester | 否 |
ENABLE_TOOLS | 启用 SDK 工具 | 否 |
ENABLE_UNIT_TESTS | 启用 SDK 的单元测试 | 否 |
ENABLE_UPDATE_CHECK | 启用更新检查 | 是 |
LINPHONE_SDK_MAKE_RELEASE_FILE_URL | 创建与 check_version 配合使用的 RELEASE 文件,并使用此 URL | "" |
贡献
代码
要提交补丁以纳入 Linphone 的源代码中:
-
首先确保您的补丁适用于最新的 Git 源代码,然后再提交:对旧版本的补丁无法合并,也不会被合并。
-
填写并发送贡献者协议,以便将您的补丁纳入 Git 树中,具体方法请点击此处。该协议的目的是授予我们对 Linphone 源代码的和平行使权利,同时不影响您对自己贡献的权利。
-
然后前往 GitHub 仓库,基于您的代码创建一个拉取请求。
请注意,我们不提供免费支持,这些贡献将在我们的空闲时间内处理。
语言
Linphone 正在获得完整的国际化支持。
我们不再使用 Transifex 进行翻译流程,而是部署了我们自己的 [Weblate](https://weblate.linphone.org) 实例。
如果您想贡献,可以访问:https://weblate.linphone.org/projects/linphone-desktop/
反馈或错误报告
使用 --verbose
参数启动应用程序以获取完整日志,并将其与您的请求一起发送。您可以使用设置中的"发送日志"按钮上传日志文件,并通过电子邮件或在相应的 GitHub 项目中发帖分享:
在某些操作系统(如 Fedora 22 及更高版本)上,默认禁用了 Qt 调试输出。要获得完整输出,您需要创建 ~/.config/QtProject/qtlogging.ini
文件并添加以下内容:
[Rules]
*.debug=true
qt.*.debug=false