- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在 gnu/linux amd64 上使用静态库构建基于 qt 的软件但没有成功(qt 是成功静态构建的)。
现在我看到有些人正在使用 UPX。所以我尝试了动态构建,实际上,"file"命令将二进制文件识别为静态链接。我可以信任它吗?我应该考虑改用 statifier 吗?
提前致谢
对不起,我不够清楚。我正在尝试使用 QT 框架构建应用程序,但构建脚本很复杂并且是为共享库制作的。我能够在动态链接的二进制文件中构建应用程序,它正在工作,但我想获得一个带有静态链接库的二进制文件。我尝试了 UPX 软件 ( http://upx.sourceforge.net/ ),正如我在其他主题上看到的那样,它用于将带有动态库的二进制文件转换为带有静态库的二进制文件。
但这对我来说似乎太神奇了,它真的有效还是只是隐藏了一些东西,Linux 认为二进制文件现在是静态链接的?
感谢您的回答。
最佳答案
不,UPX 不会将动态链接程序转换为静态链接程序。
UPX 是可执行文件的打包程序。它不会使您的程序静态链接,因为这实际上会增加它的大小,而 UPX 的目标是压缩。
然而,由于 UPX 的工作方式,file
之类的工具只会看到一个小的静态链接 stub 。这是UPX的解压套路。
当您启动一个用 UPX 压缩的程序时,这个 stub 将首先运行(而不是程序的正常 main
函数)。 stub 本身是静态链接的,但它随后会解压缩您的程序,为您的程序加载动态库,并正常启动它。因此你仍然需要动态库在那里,否则你的程序在解压后将无法正确加载。
所以您可能已经猜到了,它实际上并不是魔法,它只是隐藏了一些东西以减小尺寸。如果您仍然对其他库有问题,您应该考虑打开另一个问题。
关于c++ - UPX 是否神奇地将二进制文件从动态链接转换为静态链接库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740625/
我最近做了一些关于可执行压缩的研究。编译时test.c C 语言源代码并在 Linux 而非 windows 中使用 UPX 进行压缩。终端列表:UPX: test.so NotCompressibl
我在Delphi 2007上使用madExcept + UPX时遇到问题。 每当我打开压缩的应用程序时,Windows异常对话框就会出现,代码为0xc0000005。 有人对此有解决方案吗? 谢谢!
我正在尝试在 gnu/linux amd64 上使用静态库构建基于 qt 的软件但没有成功(qt 是成功静态构建的)。 现在我看到有些人正在使用 UPX。所以我尝试了动态构建,实际上,"file"命令
我正在尝试弄清楚如何检测二进制文件是否已使用 UPX 压缩。我正在使用一个简单的 CRC 来检测我的应用程序是否以任何方式更改,如果 CRC 由于打包程序而在大小上失败,我想将其检测为正常。 现在我开
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我正在使用 UPX 压缩器来压缩用 Delphi XE 编写的应用程序。文件大小从大约 32 Mb 到 8 Mb。 但我注意到奇怪的事情是,运行压缩文件时,RAM 的占用显着增加。从 25/30 Mb
UPX 能够打包 Dylibs 吗?它与 Mac Os X 应用程序可执行文件配合得很好,但我无法让它打包 dylib,它会抛出 UnknownExecutableFormatException 异常
如果 .NET 可执行文件是 PE 文件,为什么所有像 UPX 这样的加壳程序都会“破坏”它? 最佳答案 UPX 专为原生 应用程序而设计。这些是直接编译为机器代码的应用程序。 以 .NET Fram
我使用Eclipse编译c代码。 如何自动配置构建文件将与 upx 一起打包? 最佳答案 根据 Eclipse documentation ,您可以添加自定义构建后步骤: 未经测试,但您可以使用此示例
只是想知道。或者在技术上什至不可能给我写信,例如因为 iOS 可能会阻止跳转到解压缩代码所在的区域? 最佳答案 您不能使用它,iOS 不允许您创建可执行页面或从文件运行自定义二进制文件。 关于ios
如何将 UPX 与 pyinstaller 一起使用? 我正在关注文档。 我已经下载了 UPX。 我的文件看起来像: import csv import selenium import pandas
我用过UPX之前减少我的 Windows 可执行文件的大小,但我必须承认我对这可能产生的任何负面影响都很天真。所有这些打包/拆包的缺点是什么? 在某些情况下,是否有人会建议不要对可执行文件进行 UPX
我对 ELF 格式的工作原理或如何通过代码访问其 header 和数据知之甚少,但是我需要检查 ELF 二进制文件是否已使用 UPX for Linux 压缩(打包?)。 用 strings 检查二进
当我刚刚声明的时候 boost::thread t1, t2; 在我的程序中,然后用UPX压缩.exe文件,压缩成功。但是当我尝试启动压缩的 exe 时,Windows 告诉我它是“无效的 win32
我用 pyInstaller 编译的 python 程序,结果超过 400 MB。该程序的 GUI 基于 htmlPY ,它是“PySide 的 QtWebKit 库的包装器”。该程序体积庞大,部分原
我已经阅读了几乎所有与此主题相关的帖子,但我找不到解决方案!我的文件夹路径是:C:\Users\User\Desktop\Data Analytics Arg\py_inst 在我创建虚拟环境的文件夹
我尝试在 Linux 终端上使用 PyInstaller 获取可执行文件,但它抛出错误运行 upx -v。我尝试同时使用 .py 和 .spec 文件,但同样的错误 我在 Windows 上尝试过相同
我是一名优秀的程序员,十分优秀!