有趣生活

当前位置:首页>科技>programming tool安装教程使用Mingw编译UPX工具

programming tool安装教程使用Mingw编译UPX工具

发布时间:2026-07-21阅读(1)

导读起因最近有使用到UPX工具,UPX是非常优秀的可执行程序压缩的工具,压缩比在50%到70%之间,最主要的还是跨平台的.这里主要在Windows上使用Ming....起因

最近有使用到UPX工具,UPX是非常优秀的可执行程序压缩的工具,压缩比在50%到70%之间,最主要的还是跨平台的.

这里主要在Windows上使用MingW编译.

UPX依赖关系

upx分别依赖ucl和lzma两个组件

UPX相关下载,这里尽量使用git

git 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

ucl 解压和编译

先进行解压

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

编译UPX

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

个人能力有限,如果您发现有什么不对,请私信我

如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流

TAGS标签:  programming  Tool  安装  教程  使用  programmin

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图