草庐IT

linux - 全局偏移表结构

全局偏移表(ELF)的结构如何。我试图了解动态链接。谁能告诉我得到的数据结构是什么样子的。我不知何故从未在网上找到它。 最佳答案 这是特定于操作系统和平台的,但对于x86/x64Linux,全局偏移表只是一堆函数地址。其中每个符号都有一个条目。在解析符号之前,地址(用于函数)指向过程链接表(PLT),但随后更新为指向实际函数位置。 关于linux-全局偏移表结构,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

linux - 全局偏移表结构

全局偏移表(ELF)的结构如何。我试图了解动态链接。谁能告诉我得到的数据结构是什么样子的。我不知何故从未在网上找到它。 最佳答案 这是特定于操作系统和平台的,但对于x86/x64Linux,全局偏移表只是一堆函数地址。其中每个符号都有一个条目。在解析符号之前,地址(用于函数)指向过程链接表(PLT),但随后更新为指向实际函数位置。 关于linux-全局偏移表结构,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

linux - 共享库中的重定位条目

我正在调查共享库的重定位,遇到了一些奇怪的事情。考虑这段代码:intmyglob;intml_util_func(intp){returnp+2;}intml_func2(inta,intb){intc=ml_util_func(a);returnc+b+myglob;}我用gcc-shared将它编译成一个non-PIC共享库。我在x86上运行的32位Ubuntu上执行此操作。生成的.so有一个重定位条目,用于调用ml_func2中的ml_util_func。这是objdump-dR-Mintel在ml_func2上的输出:0000050d:50d:55pushebp50e:89e5

linux - 共享库中的重定位条目

我正在调查共享库的重定位,遇到了一些奇怪的事情。考虑这段代码:intmyglob;intml_util_func(intp){returnp+2;}intml_func2(inta,intb){intc=ml_util_func(a);returnc+b+myglob;}我用gcc-shared将它编译成一个non-PIC共享库。我在x86上运行的32位Ubuntu上执行此操作。生成的.so有一个重定位条目,用于调用ml_func2中的ml_util_func。这是objdump-dR-Mintel在ml_func2上的输出:0000050d:50d:55pushebp50e:89e5

Linux ELF 文件 : Which byte will differ for static and dynamic ELF programs?

我正在使用linuxelf文件。我想检测给定的elf程序是静态链接的(完全静态链接,ldd表示“不是动态可执行文件”)还是动态链接的。ELF适用于嵌入式Linux,所以我不能直接运行它或使用ldd实用程序。我想通过读取和检查一些字节完全在我的程序中完成此操作。我不想依赖file实用程序或libelf、binutils等。哪些字节会不同? 最佳答案 如何使用ldd.c来自μClibc?如果你愿意,应该很容易去掉任何不需要的依赖项/检查。我认为这是一种比试图通过阅读man5elf找出所有极端情况更聪明的方法,尽管FWIW它看起来只是检查

Linux ELF 文件 : Which byte will differ for static and dynamic ELF programs?

我正在使用linuxelf文件。我想检测给定的elf程序是静态链接的(完全静态链接,ldd表示“不是动态可执行文件”)还是动态链接的。ELF适用于嵌入式Linux,所以我不能直接运行它或使用ldd实用程序。我想通过读取和检查一些字节完全在我的程序中完成此操作。我不想依赖file实用程序或libelf、binutils等。哪些字节会不同? 最佳答案 如何使用ldd.c来自μClibc?如果你愿意,应该很容易去掉任何不需要的依赖项/检查。我认为这是一种比试图通过阅读man5elf找出所有极端情况更聪明的方法,尽管FWIW它看起来只是检查

linux - 预链接仅对相对重定位有影响

我正在使用cross-prelink为嵌入式ARM设备预链接使用Qt的大型C++可执行文件。请注意,我不是使用Yocto,而是使用自定义分发-所以我目前正在手动运行预链接。查看prelink的输出,似乎有效:$prelink--verbose--ld-library-path=/opt//lib:/usr/local/Qt-5.3.1/lib--root=$PRODUCT_TARGET_ROOT//rfs//path/to/binaryLayingout56librariesinvirtualaddressspace41000000-50000000Assignedvirtualadd

linux - 预链接仅对相对重定位有影响

我正在使用cross-prelink为嵌入式ARM设备预链接使用Qt的大型C++可执行文件。请注意,我不是使用Yocto,而是使用自定义分发-所以我目前正在手动运行预链接。查看prelink的输出,似乎有效:$prelink--verbose--ld-library-path=/opt//lib:/usr/local/Qt-5.3.1/lib--root=$PRODUCT_TARGET_ROOT//rfs//path/to/binaryLayingout56librariesinvirtualaddressspace41000000-50000000Assignedvirtualadd

linux - 如何查看ELF文件中包含的函数名和参数?

如果我查看文件的字节,我肯定可以看到其中的一些函数名称。有什么工具可以为我列出它们吗?甚至他们的参数也是如此? 最佳答案 这应该打印目标文件或库中所有已定义的符号。nm-C--defined-onlyfile.onm有很多选项可以用来过滤掉符号,比如-g只显示globalsymbols,-l用于打印行号(如果您使用gcc-g启用调试符号)等等。如果你有一个ELF格式的二进制文件(看起来是你的情况),你也可以使用readelfreadelf-Wsfile.o此输出中的第8列包含感兴趣的符号名称。您可以使用c++filt来分解名称:re

linux - 如何查看ELF文件中包含的函数名和参数?

如果我查看文件的字节,我肯定可以看到其中的一些函数名称。有什么工具可以为我列出它们吗?甚至他们的参数也是如此? 最佳答案 这应该打印目标文件或库中所有已定义的符号。nm-C--defined-onlyfile.onm有很多选项可以用来过滤掉符号,比如-g只显示globalsymbols,-l用于打印行号(如果您使用gcc-g启用调试符号)等等。如果你有一个ELF格式的二进制文件(看起来是你的情况),你也可以使用readelfreadelf-Wsfile.o此输出中的第8列包含感兴趣的符号名称。您可以使用c++filt来分解名称:re