OkEDU::构建开发::Linux环境
必要条件
- 支持系统:Ubuntu 20+
- C++ 版本:C++20
- Qt 版本:Qt 5.15.x
准备工具链环境
安装依赖
Ubuntu 20+
sudo apt-get update -y
sudo apt-get install git perl python3 build-essential pkgconf
sudo apt-get install gcc g++
sudo apt-get install clang llvm
sudo apt-get install make cmake
准备 Qt 环境
方法 1(下载已编译版本)
选择对应版本 : Qt下载地址
支持Ubuntu 20.04、22.04
- 动态: Qt-5.15.6-linux-shared.zip
- 静态: Qt-5.15.6-linux-static.zip
方法 2(源码编译)
从清华源 下载源代码
配置
./configure -opensource -confirm-license -prefix /opt/Qt-5.15.6 \ -debug-and-release -xcb -fontconfig -system-freetype \ -skip qtwebengine -nomake examples #默认动态,增加-static选项,则为静态Qt编译、安装
make && sudo make install
设置环境变量
$ vim /etc/profile.d/qt.sh
#添加配置 Qt 目录,如下:
export QTDIR=/opt/Qt-5.15.6
安装相关依赖
安装系统依赖
Ubuntu 20+
sudo apt-get update -y
sudo apt-get install -y libpcre2-dev libudev-dev libmtdev-dev libinput-dev libdrm-dev libgbm-dev \
libgtk-3-dev libkrb5-dev
# ssl libsodium sqlite sqlcipher
sudo apt-get install -y libssl-dev libcrypt-dev libsodium-dev libsqlite3-dev libsqlcipher-dev
# xcb
sudo apt-get install -y libxcb* libxkb* libfontconfig1-dev \
libfreetype6-dev libx11-dev libx11-xcb-dev \
libxext-dev libxfixes-dev libxi-dev libxrender-dev libxss-dev
# Multimedia
sudo apt-get install -y libasound2-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \
libgstreamer-plugins-bad1.0-dev libpulse-dev libpulse-mainloop-glib0 libopenal-dev
# sqlite sqlcipher
sudo apt install -y libsqlite3-dev libsqlcipher-dev
# ffmpeg vpx qrencode sodium
sudo apt install -y libvpx-dev libjpeg-dev libexif-dev libtiff-dev libpng16-16 libpng-dev libavcodec-dev libavdevice-dev libqrencode-dev libsodium-dev libopenal-dev
准备 WebRTC 库环境
由于网络和编译时间关系,推荐使用方法一下载已经编译好库。
下载 WebRTC库 方法一(推荐)
# 从百度网盘下载对应包
链接: https://pan.baidu.com/s/1Q6HGMkbGKzNxaspnSib8BA 提取码: wqp2
构建 WebRTC(方法二)
准备目录
mkdir {root}/webrtc-build
配置Proxy(大陆)
# 配置
set HTTP_PROXY=http://{ip}:{port}
set HTTPS_PROXY=http://{ip}:{port}
git config --global http.proxy socks5://{ip}:{port}
git config --global https.proxy socks5://{ip}:{port}
# 取消
set HTTP_PROXY
set HTTPS_PROXY
git config --global --unset http.proxy
git config --global --unset https.proxy
安装 depot_tools
# 下载工具
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 配置环境变量
export PATH={root}/webrtc-build/depot_tools:$PATH
# 配置帐号(如果没有配置)
$ git config --global user.name "John Doe"
$ git config --global user.email "jdoe@email.com"
$ git config --global core.autocrlf false
$ git config --global core.filemode false
$ # and for fun!
$ git config --global color.ui true
参考
下载 WebRTC 源码
# 创建webrtc目录
mkdir {root}/webrtc-build/webrtc -p
# 进入webrtc目录
cd {root}/webrtc-build/webrtc
# 配置repo
gclient config --name src https://webrtc.googlesource.com/src
# 同步
gclient sync
编译 WebRTC 源码
- GN 预处理
# 输出路径:../out/Debug
/webrtc/src$ ../../depot_tools/gn gen ../out/Debug --args="is_debug = true
rtc_include_tests = false \
# rtc_build_ssl=false \
# rtc_ssl_root = "/opt/openssl/include" \ #下载openssl(3.0.2版本)编译到/opt/openssl
use_lld = false \
use_rtti = true \
enable_iterator_debugging = true \
use_custom_libcxx = false \
use_custom_libcxx_for_host = false"
- 修改 src/rtc_base/BUILD.gn 配置 openssl
# libs = ["/opt/openssl/lib64/libssl.a", "/opt/openssl/lib64/libcrypto.a"]
rtc_library("rtc_base") {
visibility = [ "*" ]
cflags = []
cflags_cc = [
"-Wno-error=deprecated-declarations" , "-Wno-deprecated-declarations"
]
libs = ["/opt/openssl/lib64/libssl.a", "/opt/openssl/lib64/libcrypto.a"]
defines = []
- NINJA 编译
/webrtc/src$ ../../depot_tools/ninja -C ../out/Debug/ webrtc
配置WebRTC放置位置
# 放置目录
3rdparty/webrtc/
├── libwebrtc-linux-x86_64
│ ├── debug
│ ├── include
│ └── release
├── libwebrtc-windows-x86
│ ├── debug
│ ├── include
│ ├── release
├── libwebrtc-windows-x64
│ ├── debug
│ ├── include
│ ├── release
构建 Gloox
下载gloox库
git clone https://gitee.com/chuanshantech/ok-edu-gloox.git gloox
编译代码
# 到 gloox 根目录
# 构建 Debug
$ CC=clang CXX=clang++ ./configure --prefix=`pwd`/Debug --enable-debug=yes --with-gnutls=no --with-openssl=yes --with-tests=no && make -j`(nproc)` && make install
# 构建 Release
$ CC=clang CXX=clang++ ./configure --prefix=`pwd`/Release --enable-debug=no --with-gnutls=no --with-openssl=yes --with-tests=no && make -j`(nproc)` && make install
# 检查编译输出静态库
$ ls {Debug,Release}/
配置Gloox放置位置
# 将gloox输出目标放置如下位置
3rdparty/gloox/
└── libgloox-linux-x86_64
├── debug
│ ├── libgloox.a
│ ├── libgloox.la
│ ├── libgloox.so -> libgloox.so.18.0.0
│ ├── libgloox.so.18 -> libgloox.so.18.0.0
│ ├── libgloox.so.18.0.0
│ └── pkgconfig
└── include
└── gloox
开源地址
...全文
相关推荐
构建嵌入式Linux应用开发环境
为了能够在Linux环境下进行编程,首要任务是构建嵌入式Linux系统下的交叉编译开发环境。
STM32 开发环境 for Linux
在Linux下进行STM32开发,还可能需要使用Git来管理代码,使用Makefile进行构建,以及使用GDB进行远程调试。
Linux下ESP8266开发环境搭建
本文档详细介绍了如何在Deepin Linux环境下搭建ESP8266的开发环境。整个过程分为两大部分:首先是编辑和编译环境的搭建,其次是bin文件下载环境的搭建。
构建嵌入式Linux开发环境
嵌入式Linux开发环境的构建是一项复杂而关键的任务,它涉及到多个步骤和技术,对于任何希望在嵌入式设备上运行Linux系统的人来说都是必不可少的。
ARM+linux开发环境搭建手册
安装完成后,开发者可以进一步安装所需的开发工具,如交叉编译工具链,用于在Linux主机上构建针对ARM架构的软件。



