Centos7安装ZLMediaKit

https://github.com/ZLMediaKit/ZLMediaKit

一 获取代码

git clone https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
git submodule update --init

git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块(submodules)。这个命令在 Git 仓库中包含对其他 Git 仓库作为依赖时非常有用。下面是命令的详细解释:

  1. --init:这个选项用于初始化仓库中的子模块配置。它会读取 .gitmodules 文件,这个文件包含了子模块的 URL 和预期的提交哈希值等信息。运行 --init 选项后,Git 会在 .git/config 文件中记录这些子模块的信息,并在 .git/modules 目录下为每个子模块创建相应的配置和仓库目录。

  2. update:这个选项用于更新子模块到 .gitmodules 文件中指定的提交。如果仅运行 git submodule update 而没有 --init,Git 会假定子模块已经被初始化,并尝试更新它们到预期的提交。但是,如果子模块尚未初始化,这个命令会失败。因此,通常将 --init 和 update 结合使用以确保子模块被正确初始化和更新。

结合起来,git submodule update --init 命令的作用可以总结为:

  • 读取 .gitmodules 文件,初始化仓库中的子模块配置。
  • 检出(checkout)每个子模块到 .gitmodules 文件中指定的提交。

如果你还需要递归地初始化和更新子模块中的子模块,可以添加 --recursive 选项,即使用 git submodule update --init --recursive 命令。

这个命令对于管理大型项目中的依赖非常有用,可以确保所有依赖的库或项目都位于正确的版本,从而避免版本冲突和依赖问题。

二 下载第三方库

2.1 gcc 版本>=4.8

  • 查看版本
gcc --version
gcc -v
  • 安装
sudo yum install gcc
sudo yum install gcc-c++

2.2 cmake版本>=3.1.7

在 Linux 系统上,你可以通过终端命令来查看已安装的 CMake 版本。CMake 是一个跨平台的自动化构建系统,它使用一个名为 CMakeLists.txt 的文件来定义项目的构建过程。

要查看 CMake 的版本,请打开你的终端并输入以下命令:

cmake --version

这个命令将输出 CMake 的版本信息,包括版本号、CMake suite 的组件(如 cmake、cmake-gui、ctest 等)的版本,以及 CMake 是在哪个日期构建的。

如果你没有看到这个命令的输出,或者系统提示 cmake: command not found,那么可能是 CMake 没有被正确安装在你的系统上,或者它的可执行文件没有被添加到你的 PATH 环境变量中。

在这种情况下,你可以尝试以下几种方法:

  1. 确认 CMake 是否已安装:检查你的系统包管理器(如 apt、yum、dnf 等)是否包含了 CMake 包。

  2. 使用包管理器安装 CMake:如果你的系统上还没有安装 CMake,你可以使用包管理器来安装它。例如,在基于 Debian 的系统(如 Ubuntu)上,你可以使用 sudo apt-get install cmake 命令来安装。

  3. 检查 PATH 环境变量:如果 CMake 已经安装,但是系统找不到它,可能是因为它的可执行文件路径没有被添加到 PATH 环境变量中。你可以通过 echo $PATH 命令来查看当前的 PATH 设置,并确认 CMake 的安装路径是否包含在内。

  4. 使用完整路径运行 CMake:如果你知道 CMake 的安装路径,但是不想修改 PATH 环境变量,你可以直接使用完整路径来运行 CMake 命令。例如,如果 CMake 安装在 /usr/local/bin/cmake,你可以使用 /usr/local/bin/cmake --version 来查看版本信息。

  • 安装
sudo yum -y install cmake  //版本可能是2.8,编译时版本不够,可按以下方式安装cmake
wget https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3.tar.gz
tar -xvf cmake-3.17.0-rc3.tar.gz
cd cmake-3.17.0-rc3
./configure
make -j4
sudo make install

2.3 安装依赖库

  • 查看版本
rpm -qa | grep openssl-devel
rpm -qa | grep SDL2-devel
  • 安装
sudo yum install openssl-devel
sudo yum install SDL2-devel

2.3.2 解压源代码

2.3.3 配置编译环境

2.3.34 编译 SDL2

五、安装 SDL2

六、验证安装

  • 从源代码编译 SDL2 的步骤通常包括下载源代码、配置编译环境、编译和安装等。以下是一个详细的指南:

    2.3.1 下载 SDL2 源代码

  • 访问 SDL 的官方网站(Simple DirectMedia Layer - Homepage)或其在 GitHub 上的仓库(GitHub - libsdl-org/SDL: Simple Directmedia Layer)。
  • 在“Releases”部分找到最新的稳定版本,并下载其源代码压缩包(通常是 .tar.gz 格式)。
  • 使用 tar 命令解压下载的源代码压缩包。例如,如果下载的文件名是 SDL2-x.y.z.tar.gz,你可以使用以下命令解压:

    tar -xzvf SDL2-x.y.z.tar.gz

    这将创建一个名为 SDL2-x.y.z 的目录,其中包含 SDL2 的源代码。

  • 进入解压后的源代码目录:

    cd SDL2-x.y.z
  • 运行 ./configure 脚本以配置编译环境。这个脚本会检查你的系统环境,并生成适合你的系统的 Makefile 文件。在配置过程中,你可以根据需要传递一些选项来定制编译过程。例如,如果你想要编译一个静态库,可以使用 --enable-static 选项。

    注意:在某些系统上,你可能需要安装额外的依赖项(如 autoconfautomakelibtool 等)才能运行 ./configure 脚本。

  • 在配置完成后,使用 make 命令来编译 SDL2。这个命令会调用 Makefile 文件中的规则,并使用你的系统编译器来编译源代码。

    make

    编译过程可能需要一些时间,具体取决于你的系统性能和源代码的复杂性。

  • 编译完成后,使用 make install 命令来安装 SDL2。这个命令会将编译好的库文件、头文件和其他资源复制到你的系统目录中(通常是 /usr/local/lib 和 /usr/local/include)。

    sudo make install
    注意:使用 sudo 命令是因为安装过程通常需要写入系统目录的权限。
  • 你可以通过编写一个简单的 SDL2 程序来验证安装是否成功。例如,创建一个包含以下代码的 C 文件:

    #include <SDL2/SDL.h> 
    #include <stdio.h> 
    
    
    int main(int argc, char* argv[]) { 
    if (SDL_Init(SDL_INIT_VIDEO) != 0) { 
    printf("SDL_Init Error: %s\n", SDL_GetError()); 
    return 1; 
    } 
    
    
    SDL_Window* window = SDL_CreateWindow("SDL2 Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); 
    if (window == NULL) { 
    printf("SDL_CreateWindow Error: %s\n", SDL_GetError()); 
    return 1; 
    } 
    
    
    SDL_Delay(3000); 
    SDL_DestroyWindow(window); 
    SDL_Quit(); 
    
    
    return 0; 
    }
  • 编译并运行该程序。如果一切顺利,你应该能够看到一个显示窗口,并在 3 秒后自动关闭。

    gcc -o test_sdl2 test_sdl2.c -lSDL2 
    ./test_sdl2

    注意:在编译时,你需要确保编译器能够找到 SDL2 的头文件和库文件。这通常意味着你需要将 SDL2 的安装路径添加到你的编译器搜索路径中(例如,使用 -I 和 -L 选项),或者将 SDL2 的库文件链接到你的程序中(使用 -lSDL2 选项)。但是,如果你按照上述步骤正确安装了 SDL2,这些路径通常会被自动配置正确。

2.3 安装ffmpeg>=4.2.1

增加源:

sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
https://www.ffmpeg.org/download.html#build-linux //官网上下载4.2.1的包
tar -xvf ffmpeg-4.2.1.tar.xz
cd ffmpeg
./configure  //可能会失败,报错为nasm/yasm not found or tool old.....
//如果报错。执行sudo yum install yasm
make
make install
ffmpeg -version //可能会出现找不到/usr/bin/ffmpeg的错误,将/usr/local/bin的ffmpeg复制到/usr/bin目录下即可

出现类似以下图片所示表示成功

三 安装ZLMediaKit

cd ZLMediaKit
mkdir build
cd build
cmake ..
make -j4
make install

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI劳动力崛起:人将面临失业危机?

场景 第一眼看到这个网站的时候&#xff0c;AI员工官网&#xff08;好像是部署在美国&#xff09;&#xff0c;我觉得很好奇&#xff0c;真的可以让AI替代人类完成工作吗&#xff1f;替代到什么程度呢&#xff1f;能以自然语言直接驱动吗&#xff1f; 正好手上在做爬虫项目&am…

X射线衍射(X-ray Diffraction,XRD)小白版

文章目录 实验过程原理晶体构成X射线波长diffraction 干涉效应 Braggs Law晶体间距d散射角度θ半波长λ/2公式 公式名称由来应用设备 实验过程 In the X-ray experiment , a sample is placed into the center of an instrument and illuminated with a beam of X-rays. 在X射…

Debug-029-el-table实现自动滚动分批请求数据

前情提要 最近做了一个小优化&#xff0c;还是关于展示大屏方面的。大屏中使用el-table展示列表数据&#xff0c;最初的方案是将数据全部返回&#xff0c;确实随着数据变多有性能问题&#xff0c;有时请求时间比较长。这里做的优化就是实现列表的滚动到距离底部一定高度时再次请…

Python语法结构(二)(Python Syntax Structure II)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Shell编程-函数

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们前面学习了那么多命令&#xff0c;以及涉及到部分逻辑判断的问题。从简单来说&#xff0c;他就是Shell编程&#xff0c;…

在Xshell中查看日志文件详情

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

排序06 粗排模型

前面讲的多目标模型主要是用于精排。 粗排&#xff1a;尽量减少推理的计算量&#xff0c;牺牲准确性确保线上推理的速度足够快。 精排模型和双塔模型 中间的神经网络被多个任务共享 因此&#xff0c;前期融合模型用于召回&#xff0c;后期融合可以作为精排。 小红书粗排的三…

Shell案例之一键部署mysql

1.问题 我认为啊学习就是一个思考的过程&#xff0c;思考问题的一个流程应该是&#xff1a;提出问题&#xff0c;分析问题&#xff0c;解决问题 在shell里部署mysql服务时&#xff0c;我出现一些问题&#xff1a; 1.安装mysql-server时&#xff0c;没有密钥&#xff0c;安装…

PCL 基于中值距离的点云对应关系

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 获取中值距离筛选后的对应点对 2.1.2获取初始点对 2.1.3可视化 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇…

NetSuite Transfer Order Saved Search的关键字段取值

针对于Transfer Order的Saved Search&#xff0c;我们最经常遇到的问题就是如何取到From Location&#xff0c;To Location&#xff0c;Quantity Fulfilled&#xff0c;Quantity Received这几个值。 原生的TO Register无法取到对应的信息&#xff0c;系统中也没有相应的标准Se…

关于vue3中如何实现多个v-model的自定义组件

实现自定义组件<User v-model"userInfo" v-model:gender"gender"></User> User组件中更改数据可以同步更改父组件中的数据&#xff1a; 1 父组件&#xff1a; <User v-model"userInfo" v-model:gender"gender">&…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第一个BOSS苍蝇之母

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、战斗场景Battle Scene相关逻辑处理 1.防止玩家走出战斗场景的门2.制作一个简单的战斗场景二、制作游戏第一个BOSS苍蝇之母 1.导入素材和制作相关动画2.制作…

C#从零开始学习(GameObject实例)(unity Lab3)

这是书本中第三个unity Lab 在这次实验中,将学习如何使用C#编写代码用unity编写C#代码 GameObject实例 本次将完成的工作 将游戏资产配置在文件夹中创建材质把GameObject变成预制件脚本控制游戏防止球体重叠 将游戏资产配置在文件夹中 Script放代码 Prefabs放预制件 MAteria…

PostgreSQL的学习心得和知识总结(一百五十五)|[performance]优化期间将 WHERE 子句中的 IN VALUES 替换为 ANY

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

RabbitMQ系列学习笔记(八)--发布订阅模式

文章目录 一、发布订阅模式原理二、发布订阅模式实战1、消费者代码2、生产者代码3、查看运行结果 本文参考&#xff1a; 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、发布订阅模式原理 在开发过程中&…

大数据治理的核心思想

目录 ​编辑1.1 大数据治理的定义与重要性 1.2 大数据治理的关键要素 1.2.1 数据质量管理 1.2.2 数据安全管理 1.2.3 合规性管理 1.2.4 数据共享与协作 1.2.5 数据驱动的决策 二、对未来趋势的看法 2.1 技术发展趋势 2.1.1 人工智能与机器学习 2.1.2 云计算与边缘计…

Python数据处理工具笔记 - matplotlib, Numpy, Pandas

matplotlib, Numpy, Pandas 由于有很多例子是需要运算后的图表看着更明白一些&#xff0c;很明显csdn不支持 所以用谷歌的Colab(可以理解为白嫖谷歌的云端来运行的jupyter notebook)来展示&#xff1a; Colab链接(需要梯子)&#xff1a;Python数据挖掘 当然如果实在没有梯子&…

算法打卡 Day43(动态规划)-背包问题 + 分割等和子集

文章目录 0-1 背包问题理论基础0-1 背包问题滚动数组Leetcode 416-分割等和子集题目描述解题思路 0-1 背包问题理论基础 0-1 背包一般的题目要求是给定不同重量不同价值的物品&#xff0c;每个物品只有一个&#xff0c;已知背包中最大的负重&#xff0c;求在此限制条件下背包中…

达那福发布新品音致系列:以顶尖降噪技术,开启清晰聆听新篇章

近日&#xff0c;国际知名助听器品牌达那福推出其最新研发的音致系列助听器。该系列产品旨在通过顶尖的声音处理技术&#xff0c;直面助听器市场中普遍存在的挑战——如何在噪声环境中提供清晰的语音辨识。 根据助听器行业协会2022年的调查数据&#xff0c;高达86%的佩戴者认为…

数据结构——二叉树的基本操作及进阶操作

前言 介绍 &#x1f343;数据结构专区&#xff1a;数据结构 参考 该部分知识参考于《数据结构&#xff08;C语言版 第2版&#xff09;》116 ~ 122页 及 《数据结构教程》201 ~ 213页 重点 树的基本实现并不难&#xff0c;重点在于对递归的理解才是树这部分知识带来的最大收…