源码编译 7z

源码编译 7z

2023.11.04
ChrisZZ

1. 目的

在 macOSX 电脑上,编译 7zip 的控制台应用程序 7zz, 复刻官方给的/homebrew 提供的 7zz 程序。

2. 下载源码

https://www.7-zip.org/a/7z2301-src.tar.xz

3. 查询编译规则描述文件

7zz 是控制台程序, 大概率是 main() 函数所在的源码 xxx.c/xxx.cpp 编译生成。

在名为 makefile 的文件里搜寻 7zz。

/Users/chris/Downloads/7z2301-src/CPP/7zip/Bundles/Alone2/makefile.gcc

PROG = 7zz

注意,不用 makefile 这个文件。 makefile 里描述的是 7zz.exe 生成过程, 是 windows 下的编译规则描述。貌似作者用的 vc6, 是个狠人。

4. 执行编译

cd /Users/chris/Downloads/7z2301-src/CPP/7zip/Bundles/Alone2
make -f makefile.gcc

查询编译出的控制台程序 7zz 放到哪里了:

➜  Alone2 find . -name "7zz"
./_o/7zz
➜  _o ./7zz --help7-Zip (z) 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-2064-bit locale=zh_CN.UTF-8 Threads:8 OPEN_MAX:8192Usage: 7zz <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]<Commands>a : Add files to archiveb : Benchmarkd : Delete files from archivee : Extract files from archive (without using directory names)h : Calculate hash values for filesi : Show information about supported formatsl : List contents of archivern : Rename files in archivet : Test integrity of archiveu : Update files to archivex : eXtract files with full paths<Switches>-- : Stop switches and @listfile parsing-ai[r[-|0]]{@listfile|!wildcard} : Include archives-ax[r[-|0]]{@listfile|!wildcard} : eXclude archives-ao{a|s|t|u} : set Overwrite mode-an : disable archive_name field-bb[0-3] : set output log level-bd : disable progress indicator-bs{o|e|p}{0|1|2} : set output stream for output/error/progress line-bt : show execution time statistics-i[r[-|0]]{@listfile|!wildcard} : Include filenames-m{Parameters} : set compression Method-mmt[N] : set number of CPU threads-mx[N] : set compression level: -mx1 (fastest) ... -mx9 (ultra)-o{Directory} : set Output directory-p{Password} : set Password-r[-|0] : Recurse subdirectories for name search-sa{a|e|s} : set Archive name mode-scc{UTF-8|WIN|DOS} : set charset for console input/output-scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files-scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands-sdel : delete files after compression-seml[.] : send archive by email-sfx[{name}] : Create SFX archive-si[{name}] : read data from stdin-slp : set Large Pages mode-slt : show technical information for l (List) command-snh : store hard links as links-snl : store symbolic links as links-sni : store NT security information-sns[-] : store NTFS alternate streams-so : write data to stdout-spd : disable wildcard matching for file names-spe : eliminate duplication of root folder for extract command-spf[2] : use fully qualified file paths-ssc[-] : set sensitive case mode-sse : stop archive creating, if it can't open some input file-ssp : do not change Last Access Time of source files while archiving-ssw : compress shared files-stl : set archive timestamp from the most recently modified file-stm{HexMask} : set CPU thread affinity mask (hexadecimal number)-stx{Type} : exclude archive type-t{Type} : Set type of archive-u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options-v{Size}[b|k|m|g] : Create volumes-w[{path}] : assign Work directory. Empty path means a temporary directory-x[r[-|0]]{@listfile|!wildcard} : eXclude filenames-y : assume Yes on all queries

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

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

相关文章

【蓝桥每日一题]-倍增(保姆级教程 篇1)

今天讲一下倍增 目录 题目&#xff1a;忠诚 思路&#xff1a; 题目&#xff1a;国旗计划 思路&#xff1a; 查询迭代类倍增&#xff1a; 本质是一个一个选区间使总长度达到 M,类似凑一个数。而我们会经常用不大于它最大的二的次幂&#xff0c;减去之后&#xff0c;再重复这…

element UI DatePicker 日期选择器 点击时间点可选限制范围前后十五天

<el-date-picker v-model"timeRange" type"datetimerange" align"right" :default-timedefaultTimevalue-format"yyyy-MM-dd HH:mm:dd" range-separator"至" start-placeholder"开始日期"end-placeholder"…

编码器的分类

目录 光电编码器 一、增量式编码器 二、绝对式编码器 三、混合式绝对值编码器 四、旋转变压器 五、正余弦伺服电机编码器 光电编码器 光电编码器主要有增量式编码器、绝对式编码器、混合式绝对值编码器、旋转变压器、正余弦伺服电机编码器等&#xff0c;其中增量式编码器…

PackageManagerService初始化

参考资料&#xff1a;PMS 第 1 篇 - PackageManagerService 初始化 这个是基于Android 7的&#xff0c;我看的代码是Android 9 前言 PMS 用来管理所有的 package 信息&#xff0c;包括安装、卸载、更新以及解析 AndroidManifest.xml 以组织相应的数据结构&#xff0c;这些数…

《研发效能(DevOps)工程师》课程简介(三)丨IDCF

在研发效能领域中&#xff0c;【开发与交付】的学习重点在于掌握高效的开发工具和框架&#xff0c;了解敏捷开发方法&#xff0c;掌握持续集成与持续交付技术&#xff0c;以及如何保证应用程序的安全性和合规性等方面。 由国家工业和信息化部教育与考试中心颁发的职业技术证书…

leetCode 322.零钱兑换 完全背包 + 动态规划 + 记忆化搜索 + 递推 + 空间优化 + 画递归树

关于此题我的往期文章&#xff1a;LeetCode 322.零钱兑换 完全背包 动态规划_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://heheda.blog.csdn.net/article/details/133386579看本期文章时&#xff0c;可以先回顾一下动态规划入门知识和完全背包理论和实战…

面试算法50:向下的路径节点值之和

题目 给定一棵二叉树和一个值sum&#xff0c;求二叉树中节点值之和等于sum的路径的数目。路径的定义为二叉树中顺着指向子节点的指针向下移动所经过的节点&#xff0c;但不一定从根节点开始&#xff0c;也不一定到叶节点结束。例如&#xff0c;在如图8.5所示中的二叉树中有两条…

Nodejs和npm的使用方法和教程

Nodejs简介 Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具&#xff01; &#xff08; 运行环境&#xff0c;是不是很熟悉&#xff0c;对。就是 java JRE&#xff0c;Java 运行时环境&#xff09; Node.js 在浏览器之外运行 V8 Java…

WSL 下载

可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符&#xff0c;方法是右键单击并选择“以管理员身份运行”&#xff0c;输入 wsl --install 命令&#xff0c;然后重启计算机。 首先查看可以下载的版本 最后再运行wsl --ins…

企业电脑屏幕监控有哪些?如何实现电脑屏幕监控

企业电脑屏幕监控有哪些&#xff1f;如何实现电脑屏幕监控 下载使用安企神电脑屏幕监控软件 企业电脑屏幕监控是一种监测和记录员工在工作时间内在他们的计算机上执行的活动的技术。这种监控可以有多种目的&#xff0c;包括确保员工的生产力、确保数据安全性&#xff0c;或满…

【总】HEC-RAS学习记录

【总】HEC-RAS学习记录 目标HEC-RAS简介和下载渠道简介下载渠道指导教程 目标 为了进行溃坝模拟&#xff0c;了解了很多软件&#xff0c;最终决定使用HEC-RAS HEC-RAS简介和下载渠道 简介 HEC-RAS 是美国陆军工程兵团工程水文中心&#xff08;HEC&#xff09;开发的河道水力…

【Qt-22】Qt乱码问题解决

最近在Qt项目中遇到TCP通信接收数据乱码的问题&#xff0c;很是苦恼&#xff0c;经过多次尝试&#xff0c;终于得以解决。 感谢Qt TcpSocket 传递数据乱码显示_qt中socket接受到的客户端数据显示不出来-CSDN博客 彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_XX風的博客…

编程新手的犯错之路

第1名&#xff1a;无尽的if-else陷阱 在我刚刚学习编程的时候&#xff0c;我对if-else语句的使用充满了好奇。我曾经写下了这样一个愚蠢的代码块&#xff0c;用来判断一个数字属于哪个范围&#xff1a; if (number > 1 && number < 10) {// 做一些事情 } else …

Open3D(C++) 最小二乘拟合平面(间接平差法)

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 1、原理概述 通过传统最小二乘法对点云数据进行平面拟合时,可将误差只归因于一个方向上,本文假设误差只存在于 Z Z

Spring源码编译步骤

Spring源码学习 一、Gradle 为什么下载gradle呢&#xff1f;我们平时不都是用maven吗&#xff1f;原因只有一个&#xff0c;spring源码是用gradle构建的&#xff0c;所以&#xff0c;你想看spring源码必须安装和学会使用gradle&#xff0c;那么&#xff0c;让我们开始gradle之…

[elastic 8.x]java客户端连接elasticsearch与操作索引与文档

初始化客户端 引入相关依赖 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.10.2</version> </dependency>初始化客户端 为了方便演示&#xff0c;我关闭了ela…

微信小程序提示确认框 wx.showModal

核心实现代码如下 wx.showModal({ title: 确认, content: 确定要删除吗&#xff1f;, success (res) { if (res.confirm) { console.log(用户点击确定) } else if (res.cancel) { console.log(用户点击取消) } } })title 是确认框的标题&#xff0c;content 是确认…

GNSS精密解算软件介绍

GAMIT&#xff1a; 美国麻省理工学院&#xff08;MIT&#xff09;和加州大学圣地亚哥分校的海洋研究所&#xff08;SIO&#xff09;开发的GAMIT/GLOBK软件&#xff0c; GAMIT为双差网解&#xff0c;利用双差直接消除卫星及测站的时间误差。 gamit软件介绍-周命端&#xff1a;…

存储过程触发器

存储过程&#xff1a;存储过程是一组预编译的SQL语句&#xff0c;可以在数据库中存储并重复使用。存储过程可以提高性能、减少网络流量并提高安全性。MSSQL中的存储过程使用T-SQL编写。 触发器&#xff1a;触发器是一种特殊类型的存储过程&#xff0c;它会在数据库中执行某个操…

es-并发写入报错及解决

一、现象报错日志 VersionConflictEngineException[[XXX][1234]: version conflict, current version [2 问题产生背景 众所周知&#xff0c;es经常被用于存储日志数据&#xff0c;其中在某些场景下&#xff0c;日志产生的时机不同&#xff0c;并且需要将多类具备关联关系的日…