美文网首页互联网科技嵌入式编程
实时进程rtp依赖的库有哪些?

实时进程rtp依赖的库有哪些?

作者: 罗蓁蓁 | 来源:发表于2020-05-01 12:03 被阅读0次

    VxWorks实时进程文章,皆依赖于辉姐和燕姐,两位大佬的公司培训,由me稍作整理。

    RTP:实时进程,类似linux和windows下的进程。

    rtp的整个一系列启动流程是怎样的?操作系统在中间作了什么?一个rtp运行起来又需要那些资源?带动态库的rtp又是怎么加载动态库的?这些我都非常想要去了解,带着这些疑问,我参加培训,并写下了这系列文章。而对于许多疑惑,则分文章一一记录了下来!

    第一个问题:实时进程rtp依赖的库有哪些?

    C库:提供常用的函数,任务管理,信号量,异步信号,字符串操作等,libc.so(动态库)/libc.a(静态库)

    C++库:提供C++相关库函数,libstdc++.a等

    动态加载库:提供加载动态库的功能,libdl.a

    网络库:提供网络相关函数,socket等,仅提供特别基础的,常用的网络接口,网络协议栈核心部分仍在核心态,libnet.a,libdsi.a

    vxe文件:RTP应用二进制文件,用户添加实现自己需求功能的程序文件,编译生成vxe文件,等同于windows的exe文件,linux下可执行文件

    rtp在编译时,上诉提到的静态库(libc.a除外),都连接进入RTP中。

    如果RTP配置为使用静态C库,编译时链接libc.a到vxe文件中。

    如果RTP配置为使用动态C库,编译时只保存libc.so的相关信息,等到运行时再加载libc.so文件到内存中,libc.so加载成功后,vxe文件可正常调用其中的符号。

    备注:me认为,链接动态库或者动态库完全取决于gcc的参数,如果使用--non-static,那么就会默认去找动态库。

    FAQ:当出现调用动态库中的函数出现地址访问异常(X86为14,page fault)时,并且PC为零,需要首先关注动态库是否加载成功。

    反汇编二进制时,如果发现函数后面跟着

    @plt,那么该函数位于动态库中。如下:当RTP配置为使用动态C库时,调用semGive时,反汇编的表现形式如下:

    链接动态库.png

    那么,为什么叫@plt呢?其实plt是Procedure Linkage Table的简称,对应的还有got,涉及到的是函数定位的问题,这个东西我们后面再讲!

    出差必备

    买火车票、高铁票、机票,订酒店都打9折的出行工具TRIP,点击注册

    相关文章

      网友评论

        本文标题:实时进程rtp依赖的库有哪些?

        本文链接:https://www.haomeiwen.com/subject/lhofghtx.html