Linphone은 IP 통화 및 인스턴트 메시징을 통해 음성 및 비디오를위한 오픈 소스 소프트 폰입니다.
모든 통화, 존재 및 IM 기능에 대한 SIP 기반입니다.
일반적인 설명은 Linphone 웹 사이트에서 제공됩니다
Copyright © Belledonne Communications
Linphone은 듀얼 라이센스가 있으며 다음 중에서도 사용할 수 있습니다.
GNU/GPLV3 라이센스에 따라 무료 (오픈 소스). 이 라이센스를 사용하기 전에이 라이센스의 약관을 이해하고 동의하는지 확인하십시오 (자세한 내용은 라이센스 파일 참조).
독점 라이센스에 따라 비공개 소스 애플리케이션에 사용됩니다. 비용 및 서비스에 대한 질문은 Belledonne Communications에 문의하십시오.
지원되는 기능 및 RFC
Linphone Public Wiki
다음은 데스크탑 용 Linphone을 구축하는 일반적인 지침입니다. 각 빌드 플랫폼에 대한 특정 지침은 바로 아래에 설명되어 있습니다. 도구가 필요합니다.
cmake > = 3.22 : https://cmake.org/download/에서 다운로드하십시오.python : https://www.python.org/downloads/release/python-381/pip : 이미 파이썬 안에 포함되어 있으므로 그것에 대해 할 일이 없습니다.yasm : https://yasm.tortall.net/download.htmlnasm : https://www.nasm.us/pub/nasm/releasebuilds/doxygen (CXX 포장지에 필요)Perlpystache : 'Pip install pystache -user'사용six : 'PIP 설치 Six -user'사용git 데스크탑의 경우 : QT6 ( 6.2 이상 )이 필요합니다. C++17 지원이 필요합니다!
pip 명령을 설치하고 실행해야합니다.
pip install pystache six
환경 변수 Qt6_DIR QT6의 CMAKE 폴더를 포함하는 경로와 QT6 bin 으로가는 PATH 를 가리 키도록 설정해야합니다. 예:
Qt6_DIR="~/Qt/6.5.3/gcc_64/lib/cmake/Qt6"
PATH="~/Qt/6.5.3/gcc_64/bin/:$PATH"
참고 : 타사 도구 qtchooser 가 설치된 경우 : EVAT "$ (QTCHOOSER -PRINT -ENV)"EXPORT QT6_DIR = $ {QTLIBDIR}/CMAKE/QT6 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` or `./OUTPUT/Linphone.app/Contents/MacOS/linphone --verbose`
git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive
빌드는 SDK와 응용 프로그램을 구축하여 수행됩니다. 그들의 목표는 sdk 와 Linphone 입니다.
프로젝트의 루트에서 빌드 폴더 작성 : 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> 추가해야합니다.
모두 끝나면 파일은 빌드 디렉토리의 출력 폴더에 있습니다. 재건 할 때는 cmake --build . --target install (또는 cmake --install . ) 응용 프로그램을 올바른 구성에 넣습니다.
다른 폴더 내부의 바이너리 ( build/bin/ 및 linphone-sdk 와 같은)는 작동하지 않습니다.
SDK에서 약간의 수정을 수행 할 때는 대상 sdk 로 SDK 만 재구성하고 linphone-qt-only 응용 프로그램에 대해 동일하게 재 구축 할 수 있습니다.
패키지를 얻으려면 cmake .. -DENABLE_APP_PACKAGING=YES 사용할 수 있습니다. 파일은 OUTPUT/packages 폴더에 있습니다.
프로젝트를 다음과 같이 업데이트하십시오.
git fetch git pull -rebase
현재 지점에서 하위 모듈을 업데이트하십시오
git submodule update --init -Recursive
그런 다음 cmake를 사용하여 간단히 구입하십시오.
-DLINPHONESDK_DOXYGEN_PROGRAM 사용할 수 있습니다. 예 : Mac : -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen
SDK의 빌드가 "cmd.exe 실패"와 같은 정보와 더 이상 정보가없는 경우에는 사용되지 않는 종속성이 될 수 있습니다. 모든 것이 당신의 길에 있는지 확인해야합니다. 일반적으로 VPX 또는 DECAF에 관한 경우 Perl 설치에서 나올 수 있습니다.
응용 프로그램이 시작되지 않고 임의의 이름으로 빈 파일을 만들지 않으면 응용 프로그램과 다른 하위 모듈 사이의 잘못된 구성에서 나올 수 있습니다. 구성을 확인하고 -DCMAKE_BUILD_TYPE=<your_config> 또는 --config <your_config> 로 강제로 강제하십시오.
Mac에서는 응용 프로그램이 QopenglContext에서 시작할 때 충돌 할 수 있습니다. 해결 방법은 [ui] 섹션에서 구성 파일 (Linphonerc) : mipmap_enabled=0 에 추가하여 이미지에서 MIPMAP 모드를 비활성화하는 것입니다.
Mac OS X에 필요한 종속성을 설치하려면 홈브류를 사용할 수 있습니다. Brew와 함께 패키지를 설치하기 전에 디렉토리 권한을 변경해야 할 수도 있습니다 (MacOS> = High Sierra에서 Sudo로 권한을 변경할 수없는 경우이 stackoverflow 답변을 살펴보십시오).
Apple Store에서 Xcode를 설치하십시오. 도구를 설치할 수 있도록 적어도 한 번 실행하십시오. 실행해야 할 수도 있습니다.
xcode-select-설치
https://brew.sh/ 여기에 지침에 따라 홈브리를 설치하십시오.
종속성 설치 :
Brew 설치 CMAKE PKG-CONFIG GIT DOXYGEN NASM YASM
먼저 PIP가 있는지 확인하십시오
그런 다음 다음 명령으로 PIP 패키지를 설치할 수 있습니다.
Python -M PIP 설치 [패키지]
예를 들어 다음 명령을 입력하십시오.
python -m pip install pystache six graphviz
QT를 다운로드하고 QT6 버전을 설치하고 QT6_DIR 및 경로 변수를 설정하십시오.
ARM64 시스템을 구축하고 Intel 버전을 원한다면 CMAKE의 생성 단계에서 X86_64 프로세서를 선택해야합니다.
-dcmake_apple_silicon_processor = x86_64
평소와 같이 구축하십시오 (일반 단계).
Python에서 찾을 수없는 모듈에 대한 오류가 발생하면 CMake가 경로에서 다른 버전을 사용하려고 할 수 있습니다. Brew에서 Python을 설치 한 경우 경우에 발생할 수 있습니다. 절대 경로를 사용하여 파이썬 모듈을 설치하십시오. 예를 들어:
/opt/homebrew/python3 -m pip 설치 Pystache Six Graphviz
QT6은 MSVC에 32bits 패키지를 제공하지 않으므로 32 비트 버전이 지원되지 않습니다. Visual Studio 2022 만 지원됩니다.
MinGW/MSYS2 : 다운로드pacman -Sy --needed base-devel mingw-w64-mingw64-toolchainMSYS2 MSYS 콘솔의 pacman -S python3-pippython3 -m pip install pystache six cmd 에 Pystache Six를 설치합니다C:msys64mingw64bin , C:msys64 및 C:msys64usrbin 추가하십시오. MINGW64가 아닌 MSYS 폴더의 바이너리는 Windows 경로를 완전히 지원하지 않으므로 피해야합니다. -DENABLE_WINDOWS_TOOLS_CHECK=ON toolchain python doxygen perl yasm gawk bzip2 nasm sed patch pkg-config gettext glib2 intltool graphviz
git : msys2 : pacman -S git 또는 다운로드 사용
Visual Studio는 또한 Addons로 올바르게 구성되어야합니다. "도구"-> "도구 및 기능 획득"에서 다음 구성 요소가 설치되어 있는지 확인하십시오.
MSVC에서 올바른 QT 버전을 다운로드했는지 확인하십시오.
또는 Developer Command Prompt for VS 2022 와 함께 명령 줄을 엽니 다. qt binaries에있는 qtenv2.bat : C:Qt<version>msvc2019binqtenv2.bat
-A x64 에 cmake .. (일반 단계) :
cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo -A x64 기본 빌드는 매우 길다. 닌자 생성기 -G "Ninja" 사용하는 것이 좋습니다.cmake --build . --target ALL_BUILD --parallel 10 --config RelWithDebInfoSudo apt Qt6-Base-Dev를 설치하십시오
'모듈 "qtquick.*"가 설치되지 않은 경우 오류가 발생하면이 패키지를 설치할 수 있습니다.
종속성을 검색 할 수있는 Docker 파일 구성이 있습니다.
또한 Linphone-SDK 하위 모드의 Docker-Files 폴더에서 더 많은 구성을 사용할 수 있습니다.
| 옵션 | 설명 | 기본값 |
|---|---|---|
| enable_app_license | 패키지로 라이센스를 활성화하십시오. | 예 |
| enable_app_packaging | 포장 활성화. 패키지는 OUTPUT/packages 로 배포됩니다 | 아니요 |
| enable_app_pdf_viewer | PDF 뷰어를 활성화하십시오. QT PDF 모듈이 필요합니다. | 예 |
| enable_app_webview | 계정에 대한 webview를 활성화하십시오. WebView 엔진을 배포해야하며 큰 크기가 필요합니다. | 아니요 |
| enable_app_package_rootca | Rootca 파일을 포함시키기 (Mozilla가 게시 한 모든 루트 인증서를 연결) 패키지에 포함 | 예 |
| enable_build_app_plugins | 플러그인 빌드를 활성화하십시오 | 예 |
| enable_build_examples | 예제의 빌드를 활성화하십시오 | 아니요 |
| enable_build_verbose | 빌드 생성이 더 장황 할 수 있도록합니다 | 아니요 |
| enable_daemon | 린폰 데몬 인터페이스를 활성화하십시오. | 아니요 |
| enable_pqcrypto | Post Quantum zrtp를 활성화합니다. | 아니요 |
| 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에서 작동하는 릴리스 파일을 만들고이 URL을 사용하십시오. | "" " |
Linphone의 소스 코드에 포함 할 패치를 제출하기 위해 :
먼저 제출하기 전에 패치가 최신 GIT 소스에 적용되는지 확인하십시오. 이전 버전으로 만든 패치는 병합되지 않습니다.
링크를 따라 GIT 트리에 포함되도록 기고자 계약을 작성하고 보내십시오. 본 계약의 목표는 귀하의 기부금에 대한 귀하의 권리를 잃지 않고 Linphone 소스 코드에 대한 우리의 권리에 대한 평화로운 행사를 우리에게 부여하는 것입니다.
그런 다음 Github 저장소로 이동하여 코드를 기반으로 풀 요청을 수행하십시오.
우리는 무료 지원을 제공하지 않으며 이러한 기여는 무료 시간에 해결 될 것입니다.
Linphone : 응용 프로그램 코드.
모델 : SDK 스레드에서 실행되는 SDK 관리.
보기 : UI 스레드에서 실행되는 GUI 물건.
핵심 : MVVM 패턴으로 모델과보기를 연결하는 기본 코드.
데이터 : 코드가 아닌 모든 데이터
도구 : 일반 도구를위한 내부 라이브러리.
CMAKE : 스크립트 빌드 및 설치.
외부 : 외부 프로젝트.
--verbose 매개 변수로 애플리케이션을 시작하여 전체 로그를 가져 와서 요청과 함께 보내십시오. 설정에서 "로그 보내기"버튼을 사용하여 로그 파일을 업로드하고 이메일 또는 해당 GitHub 프로젝트의 게시물과 함께 공유 할 수 있습니다.
일부 OS (Fedora 22 이상)에서는 기본적으로 QT 디버그 출력을 비활성화합니다. 전체 출력을 얻으려면 ~/.config/QtProject/qtlogging.ini 생성하고 추가해야합니다.
[Rules]
*.debug=true
qt.*.debug=false