草庐IT

ruby - libxml-ruby 无法在 x86_64 上加载

我们在服务器端遇到libxml-rubygem的问题可能是因为它使用x86_64架构:$uname-aLinuxip-10-228-171-642.6.21.7-2.fc8xen-ec2-v1.0#1SMPTueSep110:25:30EDT2009x86_64GNU/Linuxrequire'libxml'LoadError:/usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/libxml-ruby-1.1.4/lib/libxml_ruby.so:invalidELFheader-/usr/local/ruby-enterprise/

golang 运行时包从构建它的系统设置文件路径

我有一个简单的go代码,它使用runtime包如下:packagemainimport("runtime""fmt")funcbar(){pc:=make([]uintptr,1000)n:=runtime.Callers(0,pc)frames:=runtime.CallersFrames(pc[:n])for{frame,more:=frames.Next()if!more{break}fmt.Printf("FILE=%sandFUNC=%s\n",frame.File,frame.Function)}}funcfoo(){bar()}funcmain(){foo()}我已经将G

c++ - 如何在 Windows 上调用 ELF 函数

我尝试手动反转ELF文件(libGame.so)的一些游戏函数,但它们太长而且我遇到很多错误,所以我想是否可以在Windows中调用这些函数,因为处理器是x86.我尝试恢复的功能是:CDecryptBaseClass::decrypt(void*ptr,u32lenght);我一直在寻找,但我只找到了如何调用DLL函数,也许有一些hack可以将ELF作为DLL运行... 最佳答案 理论上您可以这样做,正如AndrewMedico所建议的那样。将二进制文件加载到内存中,解析ELF文件,以某种方式解析其所有外部引用,找到要调用的函数的地

windows - 在 Windows 平台上为 powerPC 提取和检测 elf 文件

我正在尝试从elf文件中提取函数名称及其参数等信息,目的是通过更改函数的参数值来执行稳健性测试,我正在windows环境中工作,我想要检测的elf文件是powerPC架构,我尝试使用开源工具DynInsthttp://www.dyninst.org/它可以在MSVisualStudio上构建,但它检测用cl编译器编译的二进制文件(exe和dll格式),我有以下问题要提出:1)是否可以使用MicrosoftVisualStudioc++编译器生成elf文件,以便我可以使用DynInst检测二进制文件?2)有没有其他的方法或工具可以在windows平台上提取和检测elf文件?objdump

windows - 创建 ELF 镜像

我需要从共享对象(.so文件)创建一个ELF镜像文件并将其写入Windows中的另一个分区。然后在Linux中打开这个分区并加载共享对象。有人知道如何在Windows中创建ELF镜像(许多共享对象的bundle)吗? 最佳答案 您可以使用Cygwin并尝试合适的GCC交叉工具链。也许您必须先自己构建它(这很麻烦),但事情就是这样......编辑:好的,给你:一个简化的:BuildingGCCcrosscompiler(from"Linux"to"Windows")--基本步骤与那里描述的相同。您只需要使用相关的--host=...和

java - 错误的 ELF 类 : ELFCLASS32

当我在Solaris机器上运行我的应用程序时,我收到指向某个.so文件的错误。但是,该应用程序在我的Windows机器上运行得很好。如果我没记错的话,我的应用程序需要64位版本,但我在Solaris机器上只有32位版本的.so文件。有什么办法可以解决这个问题,让它改用32位版本吗?我知道它与字节码无关,但可能与JVM无关。我尝试使用-d32或-d64运行,但没有效果。更新:这是确切的错误:Exceptioninthread"main"java.lang.UnsatisfiedLinkError:librvjs11.so:ld.so.1:java:fatal:librvjs11.so:w

C++ 隐藏符号增加重定位时间

我正在尝试优化具有200多个依赖项的库的加载时间。我尝试使用可见性属性隐藏符号,这使我将导出符号的数量减少了30%。查看elf直方图,优化后桶的数量保持不变,但成功和不成功的查找减少了很多。布隆过滤器大小从8kb减小到4kb,但设置的位数从19%增加到24%。尽管加载时间增加了,我认为这是由于布隆过滤器中设置的位数比以前更高。查看依赖项,我可以看到大约有400.000个符号在重定位时没有成功地查看我的库。布隆过滤器用于过滤其中的大部分,但由于位集的数量较多,误报的数量从3.6%增加到5.76%(我在互联网上找到这个公式:误报=bitsets%^2)在优化之前做一些数学计算,我不得不在我

c++ - 模板 - 巨大的目标文件导致链接器崩溃

我有一个广泛使用模板的源文件。我还在那个文件中有不同模板的显式实例化......其中有很多。该文件被编译为静态库的一部分。我编译这个多平台上的库\多体系结构:Winx86,Linuxx86和LinuxARM。对于Linux构建,我使用不同的编译器所以生成的文件(我在这里谈论的是ELF文件的上下文本身)不同:对于GCC,生成的目标文件大小为8.4MB并且有超过40000个ELF部分;ARM编译器(armcc)生成的文件大小为12.7MB,包含超过90000个ELF部分(!);在这两种情况下,我都有调试信息。发生的事情是,在链接时,ARM链接器阻塞并死于尝试在静态库中链接那个巨大的目标文件

c++ - ELF文件中的虚拟表存放在哪个段,数据段还是其他?

众所周知,虚函数表指针通常存放在一个实例的前4个字节中。但是我很好奇在指定的ELF文件中虚函数表存放在什么地方。我写了下面的程序来测试,我用readelf-sa.out命令来获取ELF文件的符号表,但是找不到“vtable”之类的东西。#include#includeusingnamespacestd;typedefvoid(*fun_pointer)(void);classTest{public:Test(){cout 最佳答案 虚表存放在ELF文件的.rodata段中,对应的段加载到内存中。

c++ - 将源代码添加到elf文件

我想将我的C++源代码添加到相应的elf二进制文件中,我正在寻找执行此操作的最佳方法。(我使用了多个版本的代码,并不是每个版本都应该提交到svn中)。我可以使用bash的>>>运算符只附加源代码而不破坏elf文件吗?或者objcopy--add-section是一种方法吗?顺便说一句,有没有更好的想法,只是从源代码文件中递归地grep'ing所有#include行以确定所有使用的源代码文件? 最佳答案 您可以通过在命令行上使用“-E”选项从大多数C/C++编译器中获取预处理器的输出,例如,g++-Emy_file.c-omy_fil