编译
文章平均质量分 80
罗上文老师的《FFmpeg原理》学习笔记,书籍链接:https://ffmpeg.xianwaizhiyin.net
卖猪肉的痴汉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
4.2 C/C++开发环境:VSCode+CMake+MSYS2
本文介绍了如何在VSCode中使用PowerShell终端配置MSYS2环境并构建CMake项目。主要内容包括:1) 通过init_project.ps1初始化项目目录结构;2) 使用set_env.ps1脚本配置MSYS2环境变量,使其能在PowerShell中使用;3) 提供手动和自动两种编译方式(通过build.ps1脚本)。文中重点说明了MSYS2的路径配置、子系统选择和环境变量继承设置,并给出了CMake项目的基本配置示例。该方案适用于未设置环境变量的MSYS2解压安装情况。原创 2025-06-10 00:55:02 · 818 阅读 · 0 评论 -
4.1 C/C++开发环境:VSCode+CMake+VS2019
本文介绍了如何在VSCode中使用CMake插件配置VS编译器并构建C++项目。首先详细说明了软件安装步骤,包括VS、VSCode和CMake的下载与配置。然后通过示例项目演示了从创建项目文件到编译的全过程,重点讲解了CMakeLists.txt的编写和VS编译器的选择配置。最后提供了两种构建方式:直接使用预设配置或重新生成配置后进行构建。文中还解释了CMake关键参数的含义,为开发者提供了从环境搭建到项目构建的完整指导。原创 2025-06-09 17:47:24 · 1225 阅读 · 0 评论 -
3.3 批量拷贝依赖到指定目录
摘要 本文介绍了两种自动拷贝程序依赖库的方法。首先使用Dependency Walker工具分析程序依赖,将依赖路径保存到dlls.txt文件中。然后提供了两种实现方案:1) PowerShell脚本(copy_dll.ps1),支持将DLL文件复制到指定目录并自动转换为小写文件名,包含详细的错误处理和结果统计;2) Python脚本(copy_dll.py),同样实现DLL文件复制功能。两种方法都采用相同的目录结构,包含脚本文件、目标目录和依赖列表文件,适用于Windows环境下的程序依赖管理需求。其中P原创 2025-06-30 18:07:17 · 492 阅读 · 0 评论 -
3.2 判断.lib和.a是静态库 还是动态库的导入库
摘要: 区分静态库(.lib)与动态库导入库可通过三种方法:1) lib.exe工具(VS自带):静态库输出.obj文件列表,导入库显示.dll文件名;2) 文件解压(如7-Zip):静态库含大量.obj文件,导入库仅含符号表或.dll引用;3) 环境观察:静态库文件较大且独立,导入库较小且需配套.dll。推荐优先使用lib.exe官方工具验证。原创 2025-06-09 16:47:03 · 455 阅读 · 0 评论 -
3.1 查看动态库或程序的依赖库
本文介绍了分析软件依赖库的原理和工具。Windows通过PE文件导入表记录DLL依赖,Linux则通过ELF文件的.dynamic段记录.so依赖。推荐Windows使用Dependencies工具可视化分析依赖树,或dumpbin快速列出依赖;Linux常用ldd查看运行时依赖,objdump安全解析ELF结构。文章还对比了进程级分析工具如Process Explorer和pmap。最后总结强调:Windows依赖问题宜使用Dependencies调试,Linux推荐ldd结合objdump验证,缺失库需原创 2025-06-09 15:33:41 · 1304 阅读 · 0 评论 -
2.7 Conan简单使用
Conan 2.0是一个开源的C/C++包管理器,支持跨平台管理依赖。它可以通过pip安装并使用虚拟环境管理,也可以直接下载安装程序。Conan支持多种系统、架构、构建工具和编译器类型,通过conanfile.txt配置项目依赖,结合CMake构建项目。安装依赖后,Conan会生成工具链文件,简化了项目配置过程。常用命令包括搜索包、生成配置文件等,为C/C++项目提供了便捷的依赖管理方案。原创 2025-06-14 14:03:26 · 1256 阅读 · 0 评论 -
2.6 MSYS2 简单使用
MSYS2是一款Windows下的开发工具链,提供原生Windows应用编译环境与类Unix开发体验。集成了MinGW-w64工具链支持32/64位应用开发,包含Pacman包管理系统(3300+预编译包)和多个子系统(MSYS2、MINGW32/64、UCRT64、CLANG64)。安装后可通过更换国内镜像源加速,常用Pacman命令包括软件安装(-S)、系统升级(-Syu)、清理缓存(-Sc)等。需手动安装MinGW64工具链(mingw-w64-x86_64-toolchain)和基础开发工具(bas原创 2025-06-11 11:12:05 · 1813 阅读 · 0 评论 -
2.5 MinGW简单使用
MinGW是一个Windows平台的轻量级GNU开发工具集,允许使用GCC编译器构建原生Windows应用。主要组件包括GCC编译器、Binutils工具链、MinGW运行时库等,支持32/64位架构,提供POSIX/win32线程模型和不同异常处理机制。MSYS2则提供一个类Unix开发环境,集成MinGW-w64工具链和Unix工具,支持原生Windows应用开发。安装时需注意选择适合的架构、线程模型等参数。MinGW编译方式与Linux下gcc类似,可编译程序和库。MSYS2建议不加入环境变量以避免冲原创 2025-06-09 13:41:49 · 983 阅读 · 0 评论 -
2.4 vcpkg 使用
Vcpkg包管理工具使用指南 本文介绍了Vcpkg C/C++包管理工具的基本使用和进阶操作。主要内容包括: 安装配置:通过PowerShell安装Vcpkg,设置代理环境变量,编译生成vcpkg.exe 基本命令:搜索、安装、列出、导出和卸载库文件的操作方法 进阶使用: 安装指定类型的库文件(动态/静态库、Debug/Release版本) 导出版本库的多种格式(7z、zip、raw等) 通过vcpkg.json文件管理特定版本库的安装 该指南提供了详细的命令行示例和配置说明,适合开发人员快速上手Vcpkg原创 2025-06-07 17:20:37 · 1372 阅读 · 0 评论 -
2.3 VS2019 简单使用
本文介绍了VS2019开发环境的使用指南,包括项目结构解析、常用快捷键、添加源文件和第三方库的方法。重点讲解了静态库和动态库的编译过程,涉及项目类型修改、导出函数配置等关键步骤。还提供了VS与CMake结合的实践指导,列出不同VS版本的CMake生成器名称和架构选项,并给出指定生成器的命令行示例。全文通过图文并茂的方式,为开发者提供了清晰的操作指引,涵盖从基础配置到高级编译的实用技巧。原创 2025-06-07 10:45:12 · 1461 阅读 · 0 评论 -
2.2 MSVC 简单使用
MSVC工具链是VS2019的核心开发组件,包含编译器(cl.exe)、链接器(link.exe)、调试工具和包管理等功能。通过命令行可编译C程序,先由cl.exe生成.obj文件,再用link.exe链接为.exe或.dll。静态库通过lib.exe打包.obj文件,动态库则需指定导出函数或使用DEF文件。MSVC支持多种C运行时库选项(/MT静态、/MD动态),不同的库命名规范需注意区分静态库和动态库导入库。整个编译流程与Linux的gcc类似,但Windows使用COFF/PE文件格式和"/原创 2025-06-07 00:50:28 · 1138 阅读 · 0 评论 -
2.1 Windows编译环境介绍
Windows平台四大编译工具对比:MSVC是原生Windows编译套件;Cygwin通过cygwin1.dll模拟POSIX层,适合移植Linux软件;MinGW提供GCC移植但不依赖POSIX层;MSYS2结合MinGW和Cygwin优势。它们都能生成Windows程序,但Cygwin支持更多Linux特性。注意不同工具间的ABI兼容性问题,避免混用编译器导致链接错误。其中MinGW和MSVC生成原生Windows程序,Cygwin依赖模拟层,MSYS2则兼具两者特点。原创 2025-06-06 21:03:59 · 522 阅读 · 0 评论 -
1.4 编译库:静态库、动态库
本文介绍了Linux下静态库和动态库的编译、封装与使用方法。主要内容包括:静态库的编译流程(将.o文件打包成.a文件)、封装静态库(解压后重新打包);动态库的编译(生成位置无关代码)、显式调用(避免符号冲突)、以及将静态库封装为动态库的方法。此外,还讲解了如何混合使用静态库和动态库(通过-Wl参数指定链接方式),并强调了避免同一库同时静态和动态链接以防止冲突。文章提供了详细的命令行操作示例和注意事项,适合Linux开发者参考学习库的管理与使用。原创 2025-06-06 20:52:53 · 890 阅读 · 0 评论 -
1.3 编译程序:单个C文件和多个C文件
本文介绍了C程序的编译过程,分为单个文件和多文件两种情况。在单个文件编译中,演示了从hello.c源文件到可执行文件的完整过程,包括编译阶段(生成目标文件.o)和链接阶段(生成可执行文件)。重点说明了gcc命令参数的含义和目标文件的特点。在多文件编译案例中,展示了如何处理包含多个相互调用模块的程序,强调编译器在编译阶段不需要知道依赖函数的具体实现,只需在链接阶段将所有对象文件合并成最终可执行程序。文章通过具体命令和示意图,清晰地呈现了C程序的编译链接流程。原创 2025-06-06 17:25:17 · 541 阅读 · 0 评论 -
1.2 编译基础知识
I<路径>:指定头文件搜索的目录,优先级高于系统默认路径-isystem <路径>:指定系统头文件路径,优先级低于 -I 但高于标准路径环境变量:某些编译器会参考环境变量CPATH或(C 程序)或(C++ 程序)来查找头文件。-L<路径>:在链接时指定库文件的路径,优先级高于系统默认路径环境变量:链接器会参考环境变量指定的路径。使用-l<库名>指定要链接的库,链接器会自动在搜索路径中查找lib<库名>.a或lib<库名>.so-lm表示链接libm.so或libm.a(数学库)。原创 2025-06-06 16:10:36 · 496 阅读 · 0 评论 -
1.1 安装编译环境
(GNU C++ 编译器)内核/驱动开发(需头文件)(GNU C 编译器)(C 标准库头文件)原创 2025-05-05 23:23:36 · 390 阅读 · 0 评论
分享