发布时间:2026-07-21阅读(1)
最近有使用到UPX工具,UPX是非常优秀的可执行程序压缩的工具,压缩比在50%到70%之间,最主要的还是跨平台的.
这里主要在Windows上使用MingW编译.
UPX依赖关系
upx分别依赖ucl和lzma两个组件
UPX相关下载,这里尽量使用gitgit clone https://github.com/upx/upx.gitcd upx
git clone https://github.com/upx/upx-lzma-sdk.git lzma-sdk
关于ucl,这个要手动下载(采用浏览器,主要MingW没安装wget)
http://www.oberhumer.com/opensource/ucl/download/ucl-1.03.tar.gz
先进行解压
tar -xzvf ucl-1.03.tar.gzcd ucl-1.03
开始编译
./configure --prefix=/e/opensource/mymono/upx/
遇到下图:

遇到错误 your compiler passes the ACC conformance test
遇到ACC一致性测试失败.在网上找资料说是gcc的一个bug,在GCC 6的时候,我本地上gcc是9.1.0,最后找到解决方法.关于 GCC 版本 6.1.0 更高版本的注意事项在这里
具体解决方法: https://github.com/mxe/mxe/commit/0ac2a77
查看config.log,看ACC error在哪里出现的.主要看gcc 编译conftest.c参数.
然后在configure文件中,查找CFLAGS为-g -O2,并在后面加上-std=gnu90 -fPIC
if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGSelif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2 -std=gnu90 -fPIC" else CFLAGS="-g" fielse if test "$GCC" = yes; then CFLAGS="-O2 -std=gnu90 -fPIC" else CFLAGS= fifi
make all UPX_UCLDIR=/e/opensource/mymono/upx/ucl-1.03 UPX_LZMADIR=./src/lzma-sdk
找到src目录中,找upx.out文件,将out后缀改为exe.可以在编译之前去src目录下,在Makefile修改生成文件的后缀名.
UPX 运行效果
upx运行效果,upx --help
个人能力有限,如果您发现有什么不对,请私信我
如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图