问题是在下面这个问题的背景下提出的:为什么库明明在-L路径上,但链接器却找不到库?。看起来我的库和目标文件具有不同的ELF格式,这可能导致链接器无法"找到"库。 现在,这引发了几个问题: 似乎我的编译器通常生成SYSV ELF文件。(使用file检查) 然而,针对特定的C++源文件,它生...
我目前正在寻找一种向已编译的ELF可执行文件添加数据的方法,即嵌入文件到可执行文件中而不需要重新编译它。 我可以轻松地使用 cat myexe mydata > myexe_with_mydata 实现这一点,但是我无法从可执行文件中访问数据,因为我不知道原始可执行文件的大小。 有没...
在Linux上,我正在尝试剥离一个静态链接的ELF文件,只保留最基本的部分。当我运行以下命令时:strip --strip-unneeded foo 或者strip --strip-all foo 转换后的文件仍然有一个肥大的.notes节,似乎充满了奇怪的字符串。 .notes节是否真的需...
我正在按照这个教程进行学习:https://littleosbook.github.io/#linking-the-kernel 目前我使用的是Mac,我已经用nasm创建了一个目标文件,现在想使用ld将其转换为ELF可执行文件。然而,在Mac上的ld似乎不支持ELF格式,但我又不想运行Ub...
我正在CentOS 7上使用Devtoolset-7,已经用它构建了Boost 1.65.1。但是当我链接我的应用程序时,出现了以下错误:/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: /opt/rh/de...
我知道在典型的ELF二进制文件中,函数通过过程链接表(PLT)被调用。函数的PLT条目通常包含一个跳转到全局偏移表(GOT)条目的指令。此条目将首先引用一些代码将实际函数地址加载到GOT中,并在第一次调用后包含实际函数地址(延迟绑定)。 确切地说,在进行延迟绑定之前,GOT条目指向PLT中的...
什么是将PE二进制文件转换为ELF二进制文件的最佳工具? 以下是提出这个问题的简要原因: 假设我有一个简单的C程序。 我使用gcc为Linux编译它(这会得到ELF),并使用“i586-mingw32msvc-gcc”为Windows编译它(这会得到PE二进制文件)。 我想使用Bitbl...