Centos7安装ZLMediaKit
一 获取代码
git clone https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
git submodule update --init
git submodule update --init
命令用于初始化和更新 Git 仓库中的子模块(submodules)。这个命令在 Git 仓库中包含对其他 Git 仓库作为依赖时非常有用。下面是命令的详细解释:
-
--init:这个选项用于初始化仓库中的子模块配置。它会读取
.gitmodules
文件,这个文件包含了子模块的 URL 和预期的提交哈希值等信息。运行--init
选项后,Git 会在.git/config
文件中记录这些子模块的信息,并在.git/modules
目录下为每个子模块创建相应的配置和仓库目录。 -
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 环境变量中。
在这种情况下,你可以尝试以下几种方法:
-
确认 CMake 是否已安装:检查你的系统包管理器(如 apt、yum、dnf 等)是否包含了 CMake 包。
-
使用包管理器安装 CMake:如果你的系统上还没有安装 CMake,你可以使用包管理器来安装它。例如,在基于 Debian 的系统(如 Ubuntu)上,你可以使用
sudo apt-get install cmake
命令来安装。 -
检查 PATH 环境变量:如果 CMake 已经安装,但是系统找不到它,可能是因为它的可执行文件路径没有被添加到 PATH 环境变量中。你可以通过
echo $PATH
命令来查看当前的 PATH 设置,并确认 CMake 的安装路径是否包含在内。 -
使用完整路径运行 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
选项。注意:在某些系统上,你可能需要安装额外的依赖项(如
autoconf
、automake
、libtool
等)才能运行./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
cmake ..
make -j4
make install
相关文章:

Centos7安装ZLMediaKit
一 获取代码 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块(submodules)。这个命令在 Git 仓库中包含对其他 Git 仓库作为依赖时…...

面试问我LLM中的RAG,咱就是说秒过!!!
前言 本篇文章涉及了 RAG 流程中的数据拆分、向量化、查询重写、查询路由等等,在做 RAG 的小伙伴一定知道这些技巧的重要性。推荐仔细阅读,建议收藏,多读几遍,好好实践。 本文是对检索增强生成(Retrieval Augmented …...

python程序操作pdf
python代码进行多个图片合并为pdf: #python代码进行多个图片合并为pdf: from PIL import Image from fpdf import FPDF import osdef images_to_pdf(image_paths, output_pdf, quality85):"""将多个图片合并为一个PDF文件,并…...

【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。
【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。 问题描述报错原因解决方案参考 问题描述 此段Python代码(在Conda环境下运行)昨天还能运行,但在我手痒更新conda(我有罪)之…...

外包干了5天,技术明显退步
我是一名本科生,自2019年起,我便在南京某软件公司担任功能测试的工作。这份工作虽然稳定,但日复一日的重复性工作让我逐渐陷入了舒适区,失去了前进的动力。两年的时光匆匆流逝,我却在原地踏步,技术没有丝毫…...

正则表达式 | Python、Julia 和 Shell 语法详解
正则表达式在网页爬虫、脚本编写等众多任务中都有重要的应用。为了系统梳理其语法,以及 Python、Julia 和 Shell 中与正则表达式相关的工具,本篇将进行详细介绍。 相关学习资源:编程胶囊。 基础语法 通用语法 在大多数支持正则表达式的语…...

JavaScript全面指南(一)
🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南(一) 1、介绍一下JS的内置类型有哪些? 基本数据类型…...

docker-compose与docker
“docker-compose” 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个名为 docker-compose.yml 的配置文件来描述应用程序的服务、网络和卷,然后通过简单的命令就可以管理整个应用。 以下是一些常用的 docker-compose 命令及其用法: 启动…...

DDPM浅析
在机器学习和人工智能领域,生成模型一直是一个备受关注的研究方向。近年来,一种新型的生成模型——扩散概率模型(Diffusion Probabilistic Models,简称DDPM)引起了广泛的关注。本文将探讨DDPM的原理、优势以及应用。 …...

力扣刷题-算法基础
hello各位小伙伴们,为了进行算法的学习,小编特意新开一个专题来讲解一些算法题 1.移除元素. - 力扣(LeetCode) 本题大概意思是给定一个数组和一个数val删除与val相同的元素,不要改变剩余元素的顺序,最后返回剩余元素的个数。 我们在这里使用双指针,这里的双指针并不是…...

理解 Python 中的 Hooks 和装饰器
Python 中的 hooks 和装饰器,虽然它们看起来都有些魔法加成,但实际上各有妙用。下面看看他们到底是做什么的吧。 什么是 Hooks? Hooks 是指在某些操作或事件发生时,可以将自定义的代码插入和执行的一种机制。它们常用于扩展和修…...

Android 原生程序使用gdb, addr2line, readelf调试
Platform: RK3368 OS: Android 6.0 Kernel: 3.10.0 文章目录 一 gdb1. 原生程序添加调试符号2. 主机上adb push 编译好的原生程序到设备3. 设备上使用gdbserver运行原生程序4. 主机上设置adb端口转发5. 主机上运行gdb调试 二 addr2line三 readelf 一 gdb GDB(GNU…...

PHP 函数 func_num_args() 的作用
func_num_args() 是 PHP 中的一个内置函数,用于获取传递给当前用户定义函数的参数个数。这个函数特别有用于处理可变数量的参数(也称为可变参数列表)。 语法 int func_num_args ( void ) 返回值 func_num_args() 返回一个整数,…...

深入解析单片机原理及其物联网应用:附C#示例代码
深入解析单片机原理及其物联网应用:附C#示例代码 随着物联网技术的快速发展,单片机作为嵌入式系统的核心,已经广泛应用于各类智能设备中。本文将从单片机的原理出发,结合C#编程的物联网示例,带你深入了解如何利用单片…...

HTTP 和 WebSocket
目录 HTTP是什么HTTP局限性(HTTP1.1)请求和响应HTTP的主要特点:HTTP版本: HTTP与TCP关系数据封装传输过程1. **协议层次模型**:2. **封装过程**:1. **应用层(HTTP)**:2. …...

科技云报到:大模型时代下,向量数据库的野望
科技云报到原创。 自ChatGPT爆火,国内头部平台型公司一拥而上,先后发布AGI或垂类LLM,但鲜有大模型基础设施在数据层面的进化,比如向量数据库。 在此之前,向量数据库经历了几年的沉寂期,现在似乎终于乘着Ch…...

贪吃蛇游戏(代码篇)
我们并不是为了满足别人的期待而活着。 前言 这是我自己做的第五个小项目---贪吃蛇游戏(代码篇)。后期我会继续制作其他小项目并开源至博客上。 上一小项目是贪吃蛇游戏(必备知识篇),没看过的同学可以去看看…...

数控走心机系统可以定制吗
当然,走心机系统是可以定制的。随着数控技术的不断发展,走心机的数控系统越来越灵活,可以根据用户的具体需求进行定制和优化。下面,我将从几个方面来详细解答这个问题: 一、系统定制的必要性 1. 满足不同加工需求…...

PHP实现OID(Object identifier)的编码和解码
转载于:https://bkssl.com/document/php_oid_encode_decode.html <?phpclass ASN1ObjectIdentifier {/*** OID字符串编码为二进制数据* param string $oid 字符串形式的OID* return string*/public static function encode($oid){$parts explode(., $oid);$pa…...

架构设计笔记-12-信息系统架构设计理论与实践
目录 知识要点 案例分析 1.Java企业级应用系统 2.c/s架构,b/s架构 知识要点 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义了一类架构所共有的特征,主要包括架构定义、架构词汇表和架构约束。 数据挖掘是从数据库的大…...

【Power Compiler手册】15.多角多模式设计中的功耗优化
多角多模式设计中的功耗优化 可以使用多个运行条件和多种模式进行综合的设计被称为多角多模式设计。Design Compiler Graphical工具扩展了拓扑技术,以分析和优化这些设计。 有关多角多模式技术支持的综合工具的更多信息,请参见以下主题: • 优化多角多模式设计 • 报告命…...

关于HalconDeeplearn中的语义分割的实现
1.读取数据和数据集 read_dl_model (C:/Users/user/Desktop/大蒜测试/包裹/model_训练-240926-191345_opt.hdl, DLModelHandle) read_dict(C:/Users/user/Desktop/大蒜测试/包裹/model_训练-240926-162708_opt_dl_preprocess_params.hdict,[], [], DLDataset) 2.读取识别图片 I…...

【STL】AVLTree模拟实现
AVLTree模拟实现 1 前言2 AVL树的插入2.1 平衡因子不继续向上更新的情况2.2 平衡因子变为2或者-2,发生旋转2.2.1 左单旋2.2.2 右单旋2.2.3 左右双旋2.2.4 右左双旋 3 代码 1 前言 二叉搜索树的不足:如果出现极端情况,效率会变得很低。 AVL&am…...

无极低码课程【tomcat部署windows环境厂家乱码处理】
windows 下tomcat安装 下载地址一:https://tomcat.apache.org/download-90.cgi 下载地址二:https://archive.apache.org/dist/tomcat/ 解压tomcat,进入bin目录运行startup.bat...

注册安全分析报告:惠农网
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
0x01 漏洞概述 Qualitor 8.24及之前版本存在任意文件上传漏洞,未经身份验证远程攻击者可利用该漏洞代码执行,写入WebShell,进一步控制服务器权限。 0x02 复现环境 FOFA:app="Qualitor-Web" 0x03 漏洞复现 PoC POST /html/ad/adfilestorage/request/checkAcess…...

PHP-FPM和FastCGI
文章目录 前言一. FastCGI1.定义2.工作方式3.协议4.架构5.工作原理(请求生命周期) 二. PHP-FPM1.定义:2.特性3.进程管理模式4.工作流程 三.关系与应用四.配置示例五.性能优化六.配置选项七.常见问题及解决方案 前言 PHP-FPM 是基于 FastCGI …...

【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
目录 零.前置篇章 一.make的由来 二.安装make 三.编写Makefile 四.编译运行 五.删除可执行文件 零.前置篇章 第一篇【Linux快速入门】Linux与ROS学习之编译基础(gcc编译)_linuxros-CSDN博客 一.make的由来 "make"是一个用于自…...

jupyterlab的安装与使用攻略/包括汉化方法
官网链接 Project Jupyter | Home 1.第一步安装 打开控制台 使用pip工具安装 pip install jupyterlab 如图 2.安装成功后启动 jupyter lab 会自动启动它的web页面 然后就可以正常使用咯!! 如果需要更换浏览器访问 新开控制台执行下面命令 jupy…...

std::list
std::list是C标准库中的一个序列容器,它提供了双向链表的功能。std::list允许在序列的任何位置高效地插入和删除元素,而不会引起其他元素的移动,这使得std::list在需要频繁插入和删除操作的场景中非常有用。 std::list的特性: 双…...