OkEDU::构建开发::Linux环境

会飞的睡眠兔 2023-07-25 21:48:38

必要条件

  • 支持系统: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(源码编译)

  • 参考 https://doc.qt.io/qt-5/linux-requirements.html

  • 从清华源 下载源代码

  • 配置

    ./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

开源地址

...全文
708 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
边城浪子书生 2023-07-26
  • 打赏
  • 举报
回复

vs2022 支持linux?

OkMSG 2023-07-25
  • 打赏
  • 举报
回复

辛苦了

内容概要:本文聚焦于考虑经济性的储能运行优化问题,以实现经济效益最大化为核心目标,系统性地研究并实现了储能系统在电力环境中的最优充放电策略。通过Matlab编程平台,采用线性规划、动态规划及智能优化算法(如粒子群、遗传算法等)三种不同方法求解储能运行优化模型,对比分析各算法在求解效率、收敛性与实用性方面的表现。资源内容涵盖完整的模型构建流程、目标函数与约束条件的设计、算法实现代码及仿真结果可视化,重点突出在峰谷电价机制下储能系统的经济调度能力,为相关科研与工程应用提供可复现的技术参考。; 适合人群:具备电力系统基础理论知识和Matlab编程能力的高校研究生、从事新能源与储能系统优化研究的科研人员,以及参与微电网、综合能源系统设计与运行的工程技术人员。; 使用场景及目标:①研究储能系统在分时电价机制下的经济运行特性与收益模型;②对比不同数学优化方法在储能调度问题中的适用性与性能差异;③为综合能源系统、智能微网中的储能配置与运行控制提供仿真验证工具与决策支持方案。; 阅读建议:建议读者结合提供的Matlab代码逐模块学习,深入理解目标函数与运行约束的数学建模过程,尝试调整负荷数据、电价曲线或储能参数以观察策略变化,并鼓励拓展引入更多实际限制(如寿命损耗、功率爬坡率)以提升模型工程实用性。
内容概要:本文围绕“基于共享储能服务的智能楼宇双层优化配置”展开研究,通过Matlab代码实现,旨在提升智能楼宇在能源利用方面的效率与经济性。研究构建了上层优化共享储能资源配置与下层优化楼宇内部用能设备调度的双层协同优化模型,综合考虑分时电价、可再生能源出力不确定性、用户舒适度约束及储能运行特性等因素,以实现系统综合能源成本最小化与供需平衡的双重目标。文中详细阐述了双层优化问题的数学建模过程、求解算法(如智能优化算法或数学规划方法)的选择与实现策略,并通过仿真验证了所提模型在削峰填谷、降低电费支出、提高可再生能源消纳能力等方面的显著有效性,为共享储能模式在智能建筑中的应用提供了理论依据与技术支撑。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员和工程技术人员,特别适用于从事智能电网、综合能源系统、需求响应、建筑节能及共享经济模式研究的专业人士。; 使用场景及目标:①应用于智能楼宇、商业园区等场景的能源管理系统设计与运行优化;②支撑共享储能项目的规划、投资决策与商业化运营;③作为高校与科研机构在能源互联网、多能协同优化等方向的教学案例与科研参考;④复现高水平EI期刊研究成果,推动先进能源优化技术的实际转化与应用。; 阅读建议:建议读者结合提供的Matlab代码与技术文档进行逐行调试与仿真分析,深入理解双层优化架构的建模逻辑、变量耦合关系及求解流程;可尝试替换不同优化算法或调整参数设置,对比分析其对求解效率与结果的影响,从而深化对模型性能边界与适用条件的认识,并为进一步的模型拓展与创新奠定基础。

23

社区成员

发帖
与我相关
我的任务
社区描述
由个人开发者主导、社区驱动、致力于开源与商业融合,开发、维护以及推广开源自由等相关技术,提供有价值的技术服务。网址: okstar.org
开源软件开源程序员创富 企业社区 湖南省·长沙市
社区管理员
  • OkMSG
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧