当前位置: 首页 > ds >正文

基本多线程编译make命令

背景:
在ffmpeg源码编译的时候要等很久,快下班了,等不及。

解决方法:
使用多线程编译。
make -j{n}
如:

make -j8

详解:没时间看的可以返回了!

在编译 FFmpeg 时使用多线程可以显著加快编译速度。以下是使用 make 进行多线程编译的详细指南:

基本多线程编译命令

make -j$(nproc)

解释

  • -j:启用多线程编译
  • $(nproc):自动获取系统 CPU 核心数量(推荐方式)

替代指定线程数的方式

  1. 自动检测核心数

    # Linux/macOS
    make -j$(sysctl -n hw.ncpu)  # macOS
    make -j$(nproc)              # Linux
    
  2. 手动指定线程数

    make -j4     # 使用 4 个线程
    make -j8     # 使用 8 个线程
    make -j16    # 使用 16 个线程
    
  3. 不限制线程数(不推荐,可能导致系统过载):

    make -j
    

完整编译流程(带多线程优化)

# 1. 进入 FFmpeg 源码目录
cd FFmpeg# 2. 配置编译选项(根据需要调整)
./configure --enable-libwebp --enable-gpl --enable-libx264# 3. 多线程编译(使用所有可用核心)
make -j$(nproc)# 4. 安装(需要 sudo 权限)
sudo make install

多线程编译的最佳实践

  1. 核心数量选择

    • 理想线程数 = CPU 物理核心数 × 2
    • 例如 4 核 CPU 使用 -j8
    • 使用 tophtop 监控系统负载
  2. 内存考虑

    # 内存不足时减少线程数
    make -j$(($(nproc)/2))  # 使用一半核心数
    
  3. 错误处理

    # 编译失败后重新尝试(单线程调试)
    make -j1 V=1  # V=1 显示详细错误
    
  4. 结合 ccache 加速

    # 安装 ccache
    sudo apt install ccache# 配置时启用 ccache
    export CC="ccache gcc"
    export CXX="ccache g++"
    ./configure --enable-libwebp# 多线程编译
    make -j$(nproc)
    

各平台建议线程数

系统配置推荐线程数示例命令
双核 CPU-j4make -j4
四核 CPU-j8make -j8
八核 CPU-j16make -j16
16 核服务器-j32make -j32
内存 < 8GB-j$(nproc)/2make -j$(($(nproc)/2))

验证安装

# 检查 libwebp 支持
ffmpeg -version | grep libwebp# 测试动态 WebP 转换
ffmpeg -i input.webp -c:v libx264 output.mp4

提示:首次编译可能需要 10-30 分钟(取决于硬件),使用多线程可显著缩短时间。八核处理器上使用 -j16 通常比单线程快 6-8 倍。

http://www.xdnf.cn/news/13752.html

相关文章:

  • 达梦数据库raw绑定磁盘-DSC集群部署
  • 再说一说LangChain Runnable接口
  • 禁止虚拟机里的Win10的Windows Defender
  • 【热更新知识】学习一 Lua语法学习
  • 【学习笔记】计算机操作系统(六)—— 输入输出系统
  • 基于 Spring AI 的 MCP 客户端/服务端实现
  • Java中的设计模式:23种经典模式在实际项目中的应用案例
  • 一款包含150个APP移动端网站UI的psd适用于服装鞋类社交电商项目
  • 论文略读:Mixture-of-Agents Enhances Large Language Model Capabilities
  • 力扣HOT100之贪心算法:55. 跳跃游戏
  • 如何在 Docusign 批量发送信封?
  • Cesium 常见方法汇总
  • Qwen家族系列模型概述
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十四)
  • 用python判断一串字符是否属于中文的6种方法
  • 3 Studying《深入理解Android卷(邓凡平)》1
  • 【kafka】消息模型与工作原理详解
  • 如何抓取DP_AUX辅助通道数据
  • 在代码中使用uView里calendar中的Slot, tooltip 插槽
  • SQL 注入(SQL Injection)
  • UE5 学习系类(七)导入bridge资产包
  • CodeForces 228D. Zigzag
  • Master PDF Editor:全能PDF编辑工具
  • ElasticSearch聚合查询从15秒到1.2秒的深度优化实践
  • MySQL表的增删改查(基础)
  • 最新华为 HCIP-Datacom(H12-821)
  • ONLYOFFICE 协作空间 企业版使用秘籍-1.如何使用外部存储
  • 大疆相机元数据说明
  • CLIP多模态模型详解
  • Golang SSH握手过程中,报错跟客户端在算法签名上不匹配