elf相关内容

了解__libc_init_array

我从 http:// newlib查看了__libc_init_array的源代码。 sourcearchive.com/documentation/1.18.0/init_8c-source.html 。 但我不太明白这个函数的作用。 我知道这些符号 / *这些魔法符号是由链接器提供。 * / extern void(* __ preinit_array_start [] ..
发布时间:2018-04-20 16:39:01 其他开发

如何获取C(gcc)中自定义ELF部分的开始和结束地址?

我已经看到了gcc的用法 __section __ 属性(尤其是在Linux内核中)来收集自定义ELF段中的数据(通常是函数指针)。这些自定义部分中的“东西”是如何被检索和使用的? 解决方案 只要部分名称导致一个有效的C变量名称 gcc ( ld ,相反)会生成两个魔术变量: __ start_SECTION 和 __ stop_SECTION 。这些可用于检索节的开始和结束地址,如下所示 ..
发布时间:2018-04-20 16:21:28 其他开发

gcc是否有可以在ELF二进制文件中添加版本信息的选项?

我的意思是gcc是否可以将部分源代码版本信息插入到ELF二进制文件中作为章节或类似内容。我不想改变我的源文件,但添加在Makefile中GCC选项的一些信息。 解决方案 您可以发出你的版本信息转换为文本文件,然后将该文本文件转换为目标文件,然后将其静态链接到您的可执行文件中。 第一步很简单,但您必须编写一些代码:一个脚本或者以你喜欢的任何格式编写你的版本信息的纯文本文件。然后编写一个 ..
发布时间:2018-04-20 16:08:33 服务器开发

如何安装GMP,MPFR,MPC,ELF,无需共享库?

如何使用正确版本的依赖关系,使用当前版本, 逐块安装GCC(GNU编译器集合),而不是使用包管理器(如yum,rpm,apt, dpkg),而不是使用共享库? 典型的开发人员可能希望以典型的方式安装GCC,使用您的软件包管理器(yum,rpm,apt,dpkg,port ,brew等)或按照这里的说明操作( http://gcc.gnu.org/wiki/InstallingGCC ..
发布时间:2018-04-20 15:48:36 其他开发

Friend函数访问静态库中定义的类的私有成员

我有一个用C ++编写的静态库。我还可以获得静态库中定义的类的头文件。 我可以访问静态库中定义的类的私有成员,类声明? 解决方案 你的意思是你想改变库附带的头文件?无法保证在这里添加 friend 声明是可行的。即使你的编译器说它没问题,你可能会把链接部分搞乱。另外,如果那些成员是私人,你只是不访问它们。 ..
发布时间:2018-04-18 21:00:33 C/C++开发

使用clang ++,-fvisibility = hidden,typeinfo和type-erasure

这是我在Mac OS X上使用clang ++时遇到的问题的缩小版本。为了更好地反映真正的问题(第一次尝试描述问题未展示问题),对此进行了严格编辑。 失败 我在C ++中有这么大一部分软件,在目标文件中有大量符号,所以我使用 -fvisibility = hidden 来保持我的符号表小。众所周知,在这种情况下,人们必须特别注意vtables,我想我会面临这个问题。然而,我不知道如何以 ..
发布时间:2018-04-18 20:35:03 C/C++开发

最简单的合并2个或更多ELF文件的方式

我正在为一个类项目开发一些嵌入式代码,目前(根据​​需求)创建了一些srec文件并将其合并。我希望能够将这个代码加载到QEMU中,但是它通常只对ELF文件感到满意。什么是最合适的方式来合并原始的ELF文件而不是srecs。 也可以接受,一种将srec转换成ELF并将生成的文件加载的方法(objcopy似乎会产生相当破碎的文件,这样做(没有其他的架构) 工具必须能够使用m68k二进制文件,但主机 ..
发布时间:2017-08-15 21:02:41 HTML/CSS

如何解读ELF可执行文件中的动态符号表?

我正在寻找解释ELF可执行文件的动态符号表(.dynsym)。我可以使用'value'属性成功解释符号表 .symtab (每个符号16个字节)来表示符号的地址,'name'属性表示字符串开始的偏移量在 .strtab 部分。但是我无法使用相同的方法解释动态符号表(.dynsym)。我用阿里的博客[1]作为参考。 我看了另一个阿里的博客[2],但是我不明白如何解释动态符号表使用哈希表。显然, ..
发布时间:2017-07-22 11:07:04 其他开发

如何知道ELF需要哪些动态库?

是否有任何阅读标题的工具会打印出Linux可执行文件所需的动态库的名称? 我需要知道是否有一些我刚刚从源代码(它是GDB的Python分支)创建的二进制文件中的奇怪的依赖(即不是很标准),或者它主要是静态链接的。我认为比阅读makefile更容易... 解决方案 / usr / bin / ldd 是你的朋友。用法: ldd / bin / ls 样本输出: ..
发布时间:2017-06-08 22:13:39 .NET组件控件

代理共享库(sharedlib,shlib等)为ELF?

在Windows上,创建“代理DLL”或多或少是常见的,这些DLL代替了原始的DLL并转发给它(在需要的任何其他操作之后)。您可以阅读此处和 here 例如。 然而,Linux下的shlib munging文化是很不一样。它开始于LD_PRELOAD是Linux下的ld.so的内置功能,它只是将单独的shlib注入到进程中,并使用它定义为override的任何符号。而且,“注入”技术似乎定义 ..
发布时间:2017-06-08 21:07:18 .NET组件控件

库读取ELF文件DWARF调试信息

对于以DWARF格式读取ELF文件调试信息的良好跨平台库的建议?我想在Python程序中阅读DWARF调试信息。 解决方案 块上有一个新的孩子 - pyelftools - 一个用于解析ELF和DWARF格式的纯Python库。尝试一下。 它的目标是功能完整,目前正在积极开发,所以任何问题都应该快速,热情地处理: - ) ..
发布时间:2017-04-17 19:47:06 Python

ELF文件格式的段和段有什么区别?

从维基可执行和可链接格式: 段包含文件的运行时执行所必需的信息,而段包含链接和重定位的重要数据。整个文件中的任何字节可以由最多一个部分拥有,并且可以存在不属于任何部分的孤立字节。 但是段和段之间有什么区别? 在可执行的ELF文件中,段是否包含一个或多个段? 解决方案 但是段和段之间有什么区别? 正是你引用的内容:段包含运行时需要的信息,而这些部分包含信息 分段 ..
发布时间:2017-04-16 20:07:51 服务器开发

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

如果我看看文件的字节,我可以看到一些函数名称。 是否有任何工具将列出他们为我? 这应该打印对象文件或库中的所有定义的符号。 p> nm -C --defined- only file.o nm 有很多选项可以用来过滤掉 -g 仅显示全局符号, -l 使用 gcc -g 启用调试符号)等。 如果你有一个ELF格式二进制你也可以使用 readelf ..
发布时间:2017-03-09 21:46:28 服务器开发

如何在cygwin上运行ELF二进制文件

我是cygwin的新人,但我有点麻烦。 我有Linux ELF编译的二进制文件,并有一种方法来吃午饭在cygwin下一个简单的方法,如windows二进制例如。\a.exe 解决方案 //www.cygwin.com/“rel =”nofollow noreferrer“> https://www.cygwin.com/ Cygwin不是: 在Windows上运行本机Lin ..
发布时间:2017-03-09 20:16:49 Linux/Unix

其中“段映射的部分”存储在ELF文件中?

作为尝试从头开始编写编译器的一部分,我目前正在处理ELF文件的处理。 通过几篇文章和规范关于他们,我还是不太明白在哪里节段映射的存储。 当观察由NASM + ld生成的小的可执行文件时,我可以看到.text部分以某种方式映射到LOAD类型的程序头,但是如何? 当一个小的(工作)可执行文件作为输入时,一个小的readelf输出: 程序头: 类型偏移VirtAddr PhysAdd ..
发布时间:2016-12-22 20:18:43 其他开发

编译的C ++类怎么样?

有了汇编指令和C程序的一些背景知识,我可以想象一个编译的函数是什么样子,但很有趣,我从来没有仔细想过一个编译的C ++类是什么样子。 bash $ cat class.cpp #include class Base { int i; float f; }; bash $ g ++ -c class.cpp p> ..
发布时间:2016-12-22 19:42:38 C/C++开发

solaris - 编译64位gcc - elf类错误

我正在solaris上安装gcc的现代版本。我编译gmp,mpfr和mpc,他们都是64位。当我尝试配置gcc如下我得到一个错误抱怨mpc,mpfr和gmp是错误的elf类。什么给了? ./../ gcc-4.5.1 / configure --prefix = / opt / OurAppDir / gcc - -with-gmp = / opt / OurAppDir / gmp - ..
发布时间:2016-12-22 13:17:04 其他开发