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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全生产玩手机检测系统 玩手机识别系统 玩手机监测预警系统 使用 Python 和 OpenCV 库实现

在生产作业过程中&#xff0c;员工玩手机是一种极其危险的行为。它会分散员工的注意力&#xff0c;使其无法专注于工作任务。生产现场往往存在各种潜在的危险因素&#xff0c;如机械设备的运转、高空作业、化学品的使用等&#xff0c;一旦员工分心&#xff0c;就很容易忽视这些…

跨浏览器免费书签管理系统

随着互联网信息的爆炸式增长&#xff0c;如何有效管理我们日常浏览中发现的重要网页&#xff0c;成为了每个重度互联网用户的需求。一个跨平台的书签管理网站能够帮助用户在不同设备之间无缝同步和管理书签。本文将分享如何使用 Python 和 SQLite 构建一个简单、易于维护的跨平…

暖水毯/取暖毯语音识别控制芯片IC方案

暖水毯、取暖毯作为现代家居生活的温暖伴侣&#xff0c;其智能化升级已是大势所趋。在暖水毯与取暖毯中融入语音识别控制芯片IC方案&#xff0c;为用户的冬日取暖体验带来了革命性的变革。 一、暖水毯/取暖毯增加语音识别控制芯片方案&#xff0c;让产品能通过对话来调节&…

Ubuntu 24.04 系统上配置 Node.js 运行环境

本文我们重点介绍两种安装 Node.js 的方法。第一种方法使用 NVM (Node VersionManager)&#xff0c;这是安装和管理多个 Node.js 版本的最好和最快的方法。第二种方法使用官方包存储库在 Ubuntu 上安装 Node.js&#xff0c;一次只允许安装一个版本。 必备条件 A running Ubun…

qUtf8Printable()和qPrintable()

qUtf8Printable 函数是 Qt 框架中的一个实用函数&#xff0c;其主要作用是将 QString 类型的字符串安全地转换为 const char* 类型的 UTF-8 编码字符串。这个转换过程对于需要将 QString 与那些接受 const char* 参数的 C 风格字符串函数进行交互的场景特别有用。 qUtf8Printa…

3.Java入门笔记--基础语法

1.字面量 概念&#xff1a;计算机用来处理数据的&#xff0c;字面量就是告诉程序员数据在程序中的书写格式 常用数据&#xff1a;整数&#xff0c;小数直接写&#xff1b;字符单引号&#xff08;A&#xff09;且只能放一个字符&#xff1b;字符串双引号&#xff08;"Hel…

ROUGE:摘要自动评估软件包

算法解析 ROUGE&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09;是一组用于自动评估文本摘要质量的指标&#xff0c;主要通过比较机器生成的摘要与一个或多个参考摘要之间的重合程度来衡量。ROUGE 包括多个变体&#xff0c;其中最常用的有 ROUGE-N…

深度解析模型调优与正则化:L1、L2正则化及偏差-方差的权衡

&#x1f3af; 深度解析模型调优与正则化&#xff1a;L1、L2正则化及偏差-方差的权衡 &#x1f4d6; 目录 &#x1f31f; 模型调优的本质&#xff1a;偏差与方差的权衡&#x1f50e; 正则化的概念与作用&#x1f6e0; L1正则化&#xff08;Lasso回归&#xff09;详解与实现⚙…

linux 修改主机名和用户名颜色

编译 ~/.bashrc vim ~/.bashrc 如下格式 PS1\[\e[1;31m\]\h:\[\e[0;32m\]\w \[\e[1;34m\]\u\[\e[0m\]\$ PS1${debian_chroot:($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\] if [ -e /lib/terminfo…

QT中中文显示乱码问题

在VS2013中用QT开发GUI应用程序&#xff0c;Qt中显示中文乱码 一&#xff1a; //解决QT中中文显示乱码问题 #pragma execution_character_set("utf-8") 二&#xff1a;在main函数中添加以下代码&#xff1a; #include <QTextCodec>void main() {QTextCod…

MySQL中的增查操作:探索数据的奥秘,开启数据之门

本节&#xff0c;我们继续深入了解MySQL&#xff0c;本章所讲的基础操作&#xff0c;针对的是表的增删查改&#xff01; 一、Create 新增 1.1、语法 INSERT [INTO] table_name[(column [, column] ...)] VALUES(value_list) [, (value_list)] ... value_list: value, [, va…

离线安装bitnami-gitlab8.8.4+汉化

注意&#xff1a; 常规安装gitlab需要联网&#xff0c;而按装bitnami-gitlab无需联网(bitnami-gitlab用于内网环境无法联网时安装gitlab&#xff0c;两者是一个东西只是名字不一样)bitnami-gitlab-8.8.4版本可以汉化成功新用户注册账户无需激活也可以直接登录&#xff0c;因为…

200元运动蓝牙耳机有哪些?爆款测评PK力荐!

在运动场景下&#xff0c;传统的入耳式和半入耳式耳机虽然占据了大部分市场&#xff0c;但并不适合所有人&#xff0c;尤其是在长时间运动中佩戴时&#xff0c;耳道的压迫感往往会导致不适。而骨传导耳机虽然通过不塞入耳道的方式改善了佩戴舒适度&#xff0c;但在音质方面与入…

git-合并连续两次提交(一个功能,备注相同)

前言&#xff1a; 场景是这样&#xff0c;由于我是实现一个功能&#xff0c;先进行了一次commit,然后我发现写的有些小问题&#xff0c;优化了一下功能并且把代码优化了一次&#xff0c;于是又提交了一次。两次的提交都是以相同的备注&#xff08;当然这个无所谓&#xff09;&a…

keras的内部的模块有哪些? (自用便签)

AI回答, 什么时候忘了回来看看

OpenCV高级图形用户界面(11)检查是否有键盘事件发生而不阻塞当前线程函数pollKey()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 轮询已按下的键。 函数 pollKey 无等待地轮询键盘事件。它返回已按下的键的代码或如果没有键自上次调用以来被按下则返回 -1。若要等待按键被按…

如何在分布式环境中实现高可靠性分布式锁

目录 一、简单了解分布式锁 &#xff08;一&#xff09;分布式锁&#xff1a;应对分布式环境的同步挑战 &#xff08;二&#xff09;分布式锁的实现方式 &#xff08;三&#xff09;分布式锁的使用场景 &#xff08;四&#xff09;分布式锁需满足的特点 二、Redis 实现分…

12、论文阅读:利用生成对抗网络实现无监督深度图像增强

Towards Unsupervised Deep Image Enhancement With Generative Adversarial Network 摘要介绍相关工作传统图像增强基于学习的图像增强 论文中提出的方法动机和目标网络架构损失函数1) 质量损失2) 保真损失3&#xff09;身份损失4&#xff09;Total Loss 实验数据集实现细节评…

【机器学习】任务七:聚类算法 (K-means 算法、层次聚类、密度聚类对鸢尾花(Iris)数据进行聚类)

目录 1.基础知识 1.1 K-Means 算法 1.2 层次聚类&#xff08;Hierarchical Clustering&#xff09; 1.3 密度聚类&#xff08;DBSCAN&#xff09; 1.4 距离和相似度度量方法 1.5 总结&#xff1a; 2.K-means 算法对鸢尾花&#xff08;Iris&#xff09;数据进行聚类 2.1…

Linux - 环境变量 | 命令行参数 | 进程基础

文章目录 一、了解冯诺依曼体系结构1、概念2、对数据层面3、实例二、操作系统1、概念2、设计OS的目的3、定位4、操作系统怎么管理&#xff1f; 三、进程1、概念2、怎么管理进程3、描述进程-PCB4、描述进程怎么运行&#xff08;粗略&#xff09;5、进程属性6、创建子进程7、创建…