问题标签 [executable-format]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在一天结束的时候,变量标识符是完全不需要的吗?
我花了很长时间学习 TOC 和编译器设计,但还没有完成,但我对这些概念感到满意。另一方面,我对汇编和机器代码的了解非常浅,并且我一直渴望/需要连接两个方面(代码的 HLL 和 LLL 表示),因为我正在学习 C++,非常注意性能和优化讨论。
C++ 是一种静态类型语言:
我的问题是:当我们的变量写成代码语句中的表达式时,所有这些变量(和其他具有标识符的实体)是否在运行时变成,仅仅是寻址到虚拟内存位置的指令(对于静态和全局)和与局部变量的堆栈地址相关的寻址?
我的意思是,在包括语义和句法验证在内的成功编译之后,将运行时的数据作为目标内存字节的保证实体而不考虑任何标识符或任何检查,不再需要符号表是不明智的吗?
如果我的问题似乎是由于缺乏学习努力而导致的问题类型(我希望不是),请告诉我这一点,并告诉我在哪里阅读。如果是这样的话,老实说,因为我现在专注于 C++,还没有机会对低级语言有充分的了解,我提前为此道歉。
exec - 如何从 ELF 文件创建进程?
任何人都可以分享一些链接或书籍,详细解释如何从 ELF 文件创建进程。大多数免费提供的材料似乎都是抽象的,没有解释大多数细节,例如从程序头中获取的信息以及过程映像如何使用该信息在内存中。谢谢
virtual-memory - 如何使用 otool 获取二进制文件的大小?
我正在使用 otool 来获取有关我的二进制文件的信息。这是我的输出的一部分:
我们可以在这里看到command 1
withsegname __TEXT
开始于vmaddr 0x0000000100000000
问题是二进制大小是 2.3MB 而 0x0000000100000000 是 4 GB!
我假设 address 中间的“一个”与 64 位架构有关,0x0000000100000000
实际上是 address 0x00
。我一直在寻找有关此的一些信息,但没有发现任何有用的信息。谁能证实我的假设并解释这是如何工作的?
gcc - Exec 格式错误 32 位可执行 Windows 子系统 for Linux?
gcc -m32 main.c -o main
当我尝试在Windows Subsystem for Linux上执行编译的 32 位文件时,我收到以下错误:bash: ./main: cannot execute binary file: Exec format error
.
如果我在没有 -m32
它运行的情况下编译它。
在 WSL 上运行 32 位可执行文件的任何解决方案?
java - 将我的 java 程序转换为可执行文件后,所有 .txt 文件都没有被读取
我的 java 程序包含两个使用存储在两个不同 .txt 文件中的数据的操作。它在使用 Netbeans 运行时完全正常,但我将其制成可执行文件,文本文件中的值没有被读取。应该怎么做?
linux - `linux_binfmt` 类型的对象是否也描述了已注册的自定义可执行格式?
了解 Linux 内核说
可执行格式由 类型的对象描述
linux_binfmt
,它本质上提供了三种方法:load_binary
、load_shlib
和core_dump
。
和
Linux 允许用户注册他们自己的自定义可执行格式。
/proc/sys/fs/binfmt_misc
要注册一种新格式,用户将具有以下格式的字符串写入 binfmt_misc 特殊文件系统(通常安装在 )的寄存器文件中 :当内核确定可执行文件具有自定义格式时,它会启动适当的解释程序。解释程序在用户模式下运行,接收可执行文件的路径名作为其参数,并进行计算。例如,包含 Java 程序的可执行文件由 Java 虚拟机处理,例如
/usr/lib/java/bin/java
.
虽然它没有提到这一点,但注册的自定义可执行格式是否也由 type 的对象描述linux_binfmt
?
如果是,注册自定义可执行格式不需要我们显式提供load_binary
、load_shlib
和core_dump
方法。这三个方法是从注册中隐式创建的吗?
没有 load_binary
方法,内核调用什么方法通过相应的解释器来执行已注册可执行格式的可执行文件?
windows - 阻止用户在 Windows 操作系统中执行可执行文件
我有一个名为“XXX”的可执行文件,我想阻止用户执行这个可执行文件,所以我用这个链接解决了这个问题,它工作正常。
https://www.technipages.com/prevent-users-from-running-certain-programs
但是如果用户将可执行文件重命名为“YYY”,那么他们就可以在窗口中执行该文件。我正在尝试使用可执行文件的原始全名,但我找不到确切的结果。请帮我解决这个问题..
linux - Linux 可执行文件格式。规范在哪里?
我想了解 Linux 可执行文件是如何组成的。我在哪里可以得到规范?
我用 gcc 编译了一个简单的汇编文件,但生成的文件大小比我预期的要大得多。
windows - 将大(> 2GB)资源资产添加到可执行文件
我想为特定的 Qt 应用程序制作一个简单、极简的自定义跨平台安装程序。安装程序如下所示:
但在一个用例中,要存储的数据长度 > 5GB。我尝试了以下方法:
使用 Qt 安装程序框架
- 不允许离线更新。
- 制作如上图所示的自定义 Qt Quick Controls 2 UI 是不可能的(或者非常困难)
静态编译Qt并嵌入资源
rcc
- 静态编译 Qt 成功
CONFIG += resources_big
在文件中使用.pro
允许两次rcc
工具编译大资源- 适用于小于 2GB 的文件,但不适用于较大的文件。我将它用于 < 2GB 的文件
- 如果 > 2GB,则链接器 (
ld
) 失败并显示...relocation truncated to fit...
- 我按照这里
-mcmodel=medium
的建议添加了标志。它不起作用,也不起作用,也不起作用-mcmodel=large
-Wl,--image-base -Wl,0x100000000
-Wl,--image-base -Wl,0x180000000
静态编译 Qt 并将数据附加到可执行文件的末尾(这似乎是 > 2GB 文件的最佳方法)
- 附加我的 > 5GB zip 压缩测试文件
- 附加 8 个字节,大小以字节为单位
- 在 Linux 上工作
- 适用于没有那么大文件的 Windows(显示此应用程序无法在您的 PC 上运行)
我想要一些关于如何使第三种方法起作用的建议,因为它似乎是 > 2GB 文件的最佳方法。但也欢迎新的和新鲜的想法。
也欢迎使用替代的跨平台安装程序框架来纠正 Qt 缺少的功能。
如果可能的话,我不想参与winapi
。但是一个简短且易于实施的解决方案也将被接受。
顺便说一句,我目前有一台具有 4GB RAM 的 PC。但这不是问题。
python - 如何将 Python 代码转换为可执行文件?
所以我现在有了一个希望其他人使用的 python 代码。他们的计算机上没有安装 Python。我见过人们将他们的代码转换为 .exe,这样即使他们的机器上没有 Python,其他人也可以使用它。
我怎样才能做到这一点?这个需要专门的软件吗?
谢谢