首页 Linux c – SYSV与Linux / GNU ELF格式

c – SYSV与Linux / GNU ELF格式

问题是在以下问题的背景下:Why are libraries not found, even though they are clearly on the -L path?.我的库和我的目标文件似乎有不同的ELF格式,这可能导致链接器无法“找到”库.现在,这导致了几个问题:似乎我的编译器通常会生成SYSV ELF文件. (检查文

问题是在以下问题的背景下:Why are libraries not found,even though they are clearly on the -L path?.我的库和我的目标文件似乎有不同的ELF格式,这可能导致链接器无法“找到”库.

现在,这导致了几个问题:

>似乎我的编译器通常会生成SYSV ELF文件. (检查文件).但是,对于该特定的C源,它会生成Linux / GNU ELF目标文件.我想知道为什么,所以我将该源减少为一个空的main方法 – 然后我突然得到一个SYSV对象文件. C源文件中的内容可以导致编译器切换ELF格式?
>我不能将Linux / GNU与SYSV ELF链接在一起是真还是假?
>是否有强制编译器创建某种ELF格式的选项?

我正在使用Cray g(GCC)5.3.0 20151204.
最佳答案
关于问题1:答案之一似乎是STT_GNU_IFUNC类型的函数将导致编译器/链接器将相应目标文件的ELF文件格式从SYSV切换到GNU / Linux.

但是,我仍然无法找到如何识别具有STT_GNU_IFUNC类型的目标文件中的函数.使用objdump查看GNU / Linux的目标文件,readelf和nm仍然不显示STT_GNU_IFUNC类型的单个函数.

有关STT_GNU_IFUNC的更多信息可以在https://www.airs.com/blog/archives/403和以下相关问题中找到:How do I compile on linux to share with all distributions?

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/zhonghe/fwq/linux/20210330/17762.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部