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

使用修改过的arj源码编译和测试

前文
那个arj打补丁的代码说是针对exe文件的,里面有个模式去匹配EXE文件,怪不得老是出错,但是Linux二进制文件到底要不要打补丁?

 * $Id: postproc.c,v 1.5 2003/06/22 11:12:28 andrew_belov Exp $* ---------------------------------------------------------------------------* This  program  stores  the  CRC and  file  size of  ARJ.EXE  in it,  so  an* integrity check may be performed with ARJ i.

而他打补丁的方法居然是把文件长度和CRC校验值写入可执行文件,也真是罕见。我一来不知道Linux二进制文件的模式,二不知道校验值的算法,一定是写不对的,只能放弃。
继续在网上搜 arj和postproc.c,终于被我搜到下面这个存储库,https://github.com/joncampbell123/arj ,好巧不巧,存储库的英文说明正好是:

Cleanup of the old ARJ source code to compile cleanly on modern systems and fixes to compile on 64-bit platforms

说明有个人去针对64位系统专门去修了,共享在这里,时间也很巧。2016年,正好也是前文apt install的版本的年号。

更好的是GNUmakefile也已经生成,连前面配置步骤都免了,直接make --makefile GNUmakefile,果然前文那些错误一个都没有,但有一个新错误

upx --best ./linux-gnu/en/rs/arjsfxv/arjsfxv
make[1]: upx: No such file or directory

这个工具我认识,专门压缩可执行文件,不影响执行的,在这可有可无,把GNUmakefile中多余的upx注释掉,就好了, 编译出的arj命令行如下,和apt install的一样。

linux-gnu/en/rs/arj/arj
ARJ32 v 3.10, Copyright (c) 1998-2004, ARJ Software Russia. [01 Sep 2025]Processing archive: linux-gnu/en/rs/arj/arj
Archive created: 2025-09-01 13:01:08, modified: 2025-09-01 13:01:08List of frequently used commands and switches.  Type ARJ -? for more help.Usage:     ARJ <command> [-<sw> [-<sw>...]] <archive_name> [<file_names>...]
Examples:  ARJ a -e archive, ARJ e archive, ARJ l archive *.doc
<Commands>ac: Add Chapter to chapter archive     l: List contents of archivea: Add files to archive               m: Move files to archive 

再看GNUmakefile文件,也没有对arj文件打补丁的步骤,所以,CRC校验其实是不必要的?

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

相关文章:

  • C++ 学习与 CLion 使用:(五)数据类型,包括整型、实型、字符型、转义字符、字符串、布尔型
  • 从DevOps到BizDevOps:哪些DevOps工具能够成为业务创新加速引擎?
  • 响应式编程框架Reactor【8】
  • Notepad++近期版本避雷
  • 中心扩展算法
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘tox’问题
  • 利用 DrissionPage 精准获取淘宝商品描述:Python 爬虫实战指南
  • C/C++、Python和Java语言的比较
  • 【职业】算法与数据结构专题
  • 15693协议ICODE SLI 系列标签应用场景说明及读、写、密钥认证操作Qt c++源码,支持统信、麒麟等国产Linux系统
  • 浪潮科技Java开发面试题及参考答案(120道题-上)
  • 利用本地电脑上的MobaXterm连接虚拟机上的Ubuntu
  • 基于SpringBoot音乐翻唱平台
  • Linux Shell 脚本中括号类型及用途
  • three.js+WebGL踩坑经验合集(10.2):镜像问题又一坑——THREE.InstancedMesh的正反面向光问题
  • UART-TCP双向桥接服务
  • 【51单片机三路抢答器定时器1工作1外部中断1】2022-11-24
  • 参数检验vs非参数检验
  • docker 网络配置
  • 【高级】系统架构师 | 2025年上半年综合真题
  • 硬件开发_基于Zigee组网的果园养殖监控系统
  • 56_基于深度学习的X光安检危险物品检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • aws上创建jenkins
  • 力扣 23 912题(堆)
  • JAVA 面试宝典02
  • 工业飞拍技术:高速生产线的 “动态抓拍神器”,到底牛在哪?
  • 20250829的学习笔记
  • 基于GCN图神经网络的光伏功率预测Matlab代码
  • Spark实现推荐系统中的相似度算法
  • Proteus 仿真 + STM32CubeMX 协同开发全教程:从配置到仿真一步到位