动态模块 .mo/so 对应的elf 文件类型

发布于 2020-06-18 18:36:54
我看到 .mo/.so 动态模块的解释如下,
* .mo 则是编译出来时以 .mo 做为后缀名的可执行动态模块。它可以被加载,并且系统中会自动创建一个主线程执行这个动态模块中的 main 函数;同时这个 main(int argc, char** argv) 函数也可以接受命令行上的参数。

* .so 则是编译出来时以 .so 做为后缀名的动态库。它可以被加载,并驻留在内存中,并提供一些函数集由其他程序(内核里的代码或动态模块)来使用。



问题:
请问这两种动态模块对应的elf 文件类型? 非常感谢。

elf 文件类型如下:
#define ET_REL 1 /* Relocatable file */
#define ET_EXEC 2 /* Executable file */
#define ET_DYN 3 /* Shared object file */


查看更多

关注者
0
被浏览
194
4 个回答
bernard
bernard 2020-06-18
这两种类型是一样的elf,只是说RTT在加载的时候选择的方式不一样
andouwa
andouwa 2020-06-18
    本帖最后由 andouwa 于 2020-6-18 20:01 编辑


bernard 发表于 2020-6-18 19:23
这两种类型是一样的elf,只是说RTT在加载的时候选择的方式不一样

具体是那种elf 文件类型呢?

另外,还想请教一下,如果elf 文件类型是ET_REL, 是否也可以被RTT 加载执行?因为我看了很多elf 文章,都说这种类型(ET_REL)是链接视图的类型,linux只能加载执行“执行视图”的elf 文件类型(ET_EXEC)。
bernard
bernard 2020-06-19
andouwa 发表于 2020-6-18 19:34
具体是那种elf 文件类型呢?

另外,还想请教一下,如果elf 文件类型是ET_REL, 是否也可以被RTT 加载执行 ...


可以build出来,然后查看下其中的elf类型呀。具体的我也不记得了……

RTT里的.mo、.so目前还是辅助性的,复杂的情况下还是会有些问题
andouwa
andouwa 2020-06-19
bernard 发表于 2020-6-19 00:05
可以build出来,然后查看下其中的elf类型呀。具体的我也不记得了……

RTT里的.mo、.so目前还是辅助性的 ...


多谢,我去build 一下

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友